Eu li um documento ( Designing Highly Scalable OLTP Systems ) que descreve um truque para obter mais desempenho:
Como as linhas são pequenas (muitas cabem em uma página), vários bloqueios podem competir por um PAGELATCH. Podemos “desperdiçar” um pouco de espaço para obter mais desempenho. Solução: preencha as linhas com a coluna CHAR para fazer com que cada linha ocupe uma página inteira.
Alguém usa essa abordagem? Que resultados você obteve?
Obrigada.
ADICIONADO:
Aviso. O artigo vinculado não é um guia para a ação. Thomas Kejser descreve testes em bancos de dados do tamanho de terabytes, nada mais.
Eu apenas examinei brevemente o documento, mas meu primeiro pensamento foi "oh, uma publicação SQLCAT". Esses caras lançam algum material fantástico, mas muito de sua orientação é derivada do extremo extremo de ultrapassar os limites.
Você pode aprender muito lendo sobre o comportamento do SQL Server em implementações de vários milhões de $$$, mas muito pouco se aplica a instalações típicas. Este documento específico é o resultado do teste de um sistema de 10k/tps, 256 núcleos e 500 fusos.
No mundo real, onde você não está forçando os internos do SQL Server além de seus limites antecipados, essas são distrações interessantes, não recomendações.
Sua pergunta é talvez um tanto perigosa. Um transeunte casual pode ler sua pergunta, examinar brevemente o documento vinculado e concluir que preencher linhas para preencher uma página é uma boa ideia.
Sim. Como Thomas Kejser demonstrou.
Absolutamente não!
Parece muito assustador para mim. Você quer uma linha por página? Se a tabela for grande e você fizer qualquer coisa - nunca - além de buscas de linha única, acho que você está procurando problemas. Claro que você pode ter menos contenção de página em média, mas sua E/S vai explodir. Agora, o impacto será relativo - por exemplo, quantas linhas cabem em uma página normalmente? Estamos falando de linhas de 3 kb ou linhas de 300 bytes?