Quais diretrizes devem ser consideradas para manter índices de texto completo?
Devo RECONSTRUIR ou REORGANIZAR o catálogo de texto completo (consulte BOL )? O que é uma cadência de manutenção razoável? Quais heurísticas (semelhantes aos limiares de fragmentação de 10% e 30%) poderiam ser usadas para determinar quando a manutenção é necessária?
(Tudo abaixo é simplesmente informações extras, elaborando a pergunta e mostrando o que eu pensei até agora.)
Informações adicionais: minha pesquisa inicial
Existem muitos recursos na manutenção do índice b-tree (por exemplo, esta pergunta , os scripts de Ola Hallengren e várias postagens no blog sobre o assunto de outros sites). No entanto, descobri que nenhum desses recursos fornece recomendações ou scripts para manter índices de texto completo.
Existe uma documentação da Microsoft que menciona que desfragmentar o índice da árvore b da tabela base e, em seguida, executar uma REORGANIZE no catálogo de texto completo pode melhorar o desempenho, mas não toca em recomendações mais específicas.
Eu também encontrei essa pergunta , mas ela se concentra principalmente no rastreamento de alterações (como as atualizações de dados na tabela subjacente são propagadas no índice de texto completo) e não no tipo de manutenção programada regularmente que pode maximizar a eficiência do índice.
Informações adicionais: teste de desempenho básico
Este SQL Fiddle contém código que pode ser usado para criar um índice de texto completo com AUTO
controle de alterações e examinar o tamanho e o desempenho da consulta do índice, à medida que os dados na tabela são modificados. Quando executo a lógica do script em uma cópia dos meus dados de produção (em oposição aos dados fabricados artificialmente no violino), aqui está um resumo dos resultados que estou vendo após cada etapa de modificação de dados:
Embora as instruções de atualização neste script tenham sido razoavelmente inventadas, esses dados parecem mostrar que há muito a ser ganho pela manutenção regular.
Informações adicionais: Idéias iniciais
Estou pensando em criar uma tarefa noturna ou semanal. Parece que esta tarefa pode executar um RECONSTRUÇÃO ou REORGANIZAR.
Como os índices de texto completo podem ser bastante grandes (dezenas ou centenas de milhões de linhas), eu gostaria de poder detectar quando os índices no catálogo estão suficientemente fragmentados para garantir uma REBUILD / REORGANIZE. Não sei ao certo o que a heurística pode fazer sentido para isso.
fonte