Fator de preenchimento

A opção fator de preenchimento é fornecida para ajustar o armazenamento e o desempenho de dados de índice. Quando um índice é criado ou recriado, o valor de fator de preenchimento determina a porcentagem de espaço em cada página de nível folha a ser preenchida com dados, reservando o restante em cada página como espaço livre para futuro crescimento. Por exemplo, a especificação de um valor de fator de preenchimento de 80 significa que 20 por cento de cada página de nível folha ficará vazio, fornecendo espaço para a expansão do índice à medida que dados forem adicionados à tabela subjacente. O espaço vazio é reservado entre as linhas do índice e não no final do índice.

O valor de fator de preenchimento é uma porcentagem de 1 a 100 e o padrão para todo o servidor é 0, o que significa que as páginas de nível folha estão totalmente preenchidas.

ObservaçãoObservação

Os valores de fator de preenchimento 0 e 100 são iguais em todos os aspectos.

Você pode usar as instruções CREATE INDEX ou ALTER INDEX para definir o valor de fator de preenchimento para índices individuais. Para modificar o valor padrão de todo o servidor, use o procedimento armazenado do sistema sp_configure. Para exibir o valor de fator de preenchimento de um ou mais índices, use sys.indexes.

Observação importanteImportante

A configuração do fator de preenchimento é aplicada somente quando o índice é criado ou recriado. O Mecanismo de Banco de Dados do SQL Server não mantém dinamicamente a porcentagem especificada de espaço vazio nas páginas. Tentar manter o espaço extra nas páginas de dados anularia o propósito do fator de preenchimento, porque o Mecanismo de Banco de Dados precisaria executar divisões de página para manter a porcentagem de espaço livre especificada pelo fator de preenchimento em cada página conforme os dados fossem inseridos.

Considerações sobre desempenho

Divisões de página

Um valor de fator de preenchimento corretamente escolhido pode reduzir divisões potenciais de páginas fornecendo espaço suficiente para expansão do índice à medida que são adicionados dados à tabela subjacente. Quando uma nova linha é adicionada a uma página de índice cheia, o Mecanismo de Banco de Dados move aproximadamente metade das linhas para uma nova página para fornecer espaço para a nova linha. Essa reorganização é conhecida como divisão de página. Uma divisão de página abre espaço para novos registros, mas pode demorar a ser executada e é uma operação que consome muitos recursos. Além disso, também pode causar fragmentação, o que gera um aumento das operações de E/S. Quando ocorrem divisões de página freqüentemente, o índice pode ser recriado usando um valor de fator de preenchimento novo ou existente para redistribuir os dados. Para obter mais informações, consulte Reorganizando e recriando índices.

Embora um valor de fator de preenchimento baixo, diferente de 0, possa reduzir a necessidade de dividir páginas à medida que o índice cresce, o índice precisará de mais espaço de armazenamento e poderá reduzir o desempenho de leitura. Mesmo para um aplicativo orientado para muitas operações de inserção e atualização, o número de leituras de banco de dados normalmente ultrapassa o número de gravações de banco de dados por um fator de 5 a 10. Portanto, especificar um fator de preenchimento diferente do padrão pode reduzir o desempenho de leitura de banco de dados em um valor inversamente proporcional à configuração do fator de preenchimento. Por exemplo, um valor de fator de preenchimento de 50 pode fazer com que o desempenho de leitura do banco de dados seja reduzido em duas vezes. O desempenho de leitura é reduzido porque o índice contém mais páginas, portanto, aumenta as operações de E/S no disco necessárias para recuperar os dados.

Adicionando dados ao final da tabela

Um fator de preenchimento diferente de zero ou 100 poderá ser bom para o desempenho se os novos dados forem distribuídos uniformemente ao longo da tabela. No entanto, se todos os dados forem adicionados ao final da tabela, o espaço vazio nas páginas do índice não será preenchido. Por exemplo, se a coluna de chave de índice for uma coluna IDENTITY, a chave de novas linhas estará sempre aumentando e as linhas do índice serão adicionadas logicamente no final do índice. Se as linhas existentes serão atualizadas com dados que aumentam o tamanho das linhas, use um fator de preenchimento menor que 100. Os bytes adicionais em cada página ajudarão minimizar divisões de página provocadas pelo comprimento adicional nas linhas.