Quelles lignes directrices faut-il envisager pour gérer les index de texte intégral?
Dois-je RECONSTRUIRE ou RÉORGANISER le catalogue de texte intégral (voir BOL )? Qu'est-ce qu'une cadence d'entretien raisonnable? Quelles heuristiques (similaires aux seuils de fragmentation de 10% et 30%) pourraient être utilisées pour déterminer quand une maintenance est nécessaire?
(Tout ce qui suit est simplement des informations supplémentaires développant la question et montrant ce que j'ai pensé jusqu'à présent.)
Info supplémentaire: ma recherche initiale
Il existe de nombreuses ressources sur la maintenance de l'index b-tree (par exemple, cette question , les scripts d'Ola Hallengren et de nombreux articles de blog sur le sujet provenant d'autres sites). Cependant, j'ai constaté qu'aucune de ces ressources ne fournit de recommandations ou de scripts pour la maintenance des index de texte intégral.
Il existe une documentation Microsoft qui mentionne que la défragmentation de l'index b-tree de la table de base, puis l'exécution d'une RÉORGANISATION sur le catalogue de texte intégral peuvent améliorer les performances, mais elle ne touche à aucune recommandation plus spécifique.
J'ai également trouvé cette question , mais elle est principalement axée sur le suivi des modifications (comment les mises à jour des données de la table sous-jacente sont propagées dans l'index de texte intégral) et non sur le type de maintenance régulièrement planifiée qui pourrait maximiser l'efficacité de l'index.
Informations supplémentaires: tests de performances de base
Ce SQL Fiddle contient du code qui peut être utilisé pour créer un index de texte intégral avec AUTO
suivi des modifications et examiner à la fois la taille et les performances de requête de l'index lorsque les données de la table sont modifiées. Lorsque j'exécute la logique du script sur une copie de mes données de production (par opposition aux données fabriquées artificiellement dans le violon), voici un résumé des résultats que je vois après chaque étape de modification des données:
Même si les instructions de mise à jour de ce script étaient assez artificielles, ces données semblent montrer qu'il y a beaucoup à gagner d'une maintenance régulière.
Info supplémentaire: Idées initiales
Je pense à créer une tâche nocturne ou hebdomadaire. Il semble que cette tâche pourrait effectuer une RECONSTRUCTION ou une RÉORGANISATION.
Étant donné que les index de recherche en texte intégral peuvent être assez volumineux (des dizaines ou des centaines de millions de lignes), j'aimerais pouvoir détecter quand les index du catalogue sont suffisamment fragmentés pour qu'une RECONSTRUCTION / RÉORGANISATION soit justifiée. Je ne sais pas trop quelle heuristique pourrait avoir un sens pour cela.
la source