¿Qué pautas deben considerarse para mantener los índices de texto completo?
¿Debería RECONSTRUIR o REORGANIZAR el catálogo de texto completo (ver BOL )? ¿Qué es una cadencia de mantenimiento razonable? ¿Qué heurística (similar a los umbrales de fragmentación del 10% y 30%) podría usarse para determinar cuándo se necesita mantenimiento?
(Todo lo que sigue es simplemente información adicional elaborada sobre la pregunta y que muestra lo que he pensado hasta ahora).
Información adicional: mi investigación inicial
Hay muchos recursos sobre el mantenimiento del índice b-tree (por ejemplo, esta pregunta , los scripts de Ola Hallengren y numerosas publicaciones de blog sobre el tema desde otros sitios). Sin embargo, descubrí que ninguno de estos recursos proporciona recomendaciones o scripts para mantener índices de texto completo.
Existe documentación de Microsoft que menciona que desfragmentar el índice b-tree de la tabla base y luego realizar una REORGANIZACIÓN en el catálogo de texto completo puede mejorar el rendimiento, pero no incluye recomendaciones más específicas.
También encontré esta pregunta , pero se centra principalmente en el seguimiento de cambios (cómo las actualizaciones de datos de la tabla subyacente se propagan en el índice de texto completo) y no en el tipo de mantenimiento programado regularmente que podría maximizar la eficiencia del índice.
Información adicional: pruebas de rendimiento básicas
Este SQL Fiddle contiene código que se puede usar para crear un índice de texto completo con AUTO
seguimiento de cambios y examinar tanto el tamaño como el rendimiento de la consulta del índice a medida que se modifican los datos de la tabla. Cuando ejecuto la lógica del script en una copia de mis datos de producción (a diferencia de los datos fabricados artificialmente en el violín), aquí hay un resumen de los resultados que veo después de cada paso de modificación de datos:
Aunque las declaraciones de actualización en este script fueron bastante artificiales, estos datos parecen mostrar que hay mucho que ganar con el mantenimiento regular.
Información adicional: ideas iniciales
Estoy pensando en crear una tarea nocturna o semanal. Parece que esta tarea podría realizar una RECONSTRUCCIÓN o REORGANIZAR.
Debido a que los índices de texto completo pueden ser bastante grandes (decenas o cientos de millones de filas), me gustaría poder detectar cuándo los índices dentro del catálogo están lo suficientemente fragmentados como para justificar una RECONSTRUCCIÓN / REORGANIZACIÓN. No estoy un poco claro sobre qué heurística podría tener sentido para eso.