Quali linee guida dovrebbero essere prese in considerazione per mantenere gli indici full-text?
Devo RICOSTRUIRE o RIORGANIZZARE il catalogo full-text (vedi BOL )? Cos'è una cadenza di manutenzione ragionevole? Quali euristiche (simili alle soglie di frammentazione del 10% e del 30%) potrebbero essere utilizzate per determinare quando è necessaria la manutenzione?
(Tutto sotto è semplicemente informazioni extra che elaborano la domanda e mostrano ciò a cui ho pensato finora.)
Informazioni extra: la mia ricerca iniziale
Ci sono molte risorse sulla manutenzione dell'indice b-tree (ad esempio, questa domanda , gli script di Ola Hallengren e numerosi post di blog sull'argomento da altri siti). Tuttavia, ho scoperto che nessuna di queste risorse fornisce consigli o script per il mantenimento degli indici full-text.
Esiste una documentazione Microsoft che menziona il fatto che la deframmentazione dell'indice b-tree della tabella di base e quindi l'esecuzione di una RIORGANIZZAZIONE sul catalogo full-text può migliorare le prestazioni, ma non tocca nessun consiglio più specifico.
Ho anche trovato questa domanda , ma è principalmente focalizzata sul rilevamento delle modifiche (come gli aggiornamenti dei dati alla tabella sottostante vengono propagati nell'indice full-text) e non sul tipo di manutenzione regolarmente programmata che potrebbe massimizzare l'efficienza dell'indice.
Informazioni extra: test delle prestazioni di base
Questo violino SQL contiene codice che può essere utilizzato per creare un indice full-text con AUTO
rilevamento delle modifiche ed esaminare sia le dimensioni che le prestazioni della query dell'indice man mano che i dati nella tabella vengono modificati. Quando eseguo la logica dello script su una copia dei miei dati di produzione (al contrario dei dati fabbricati artificialmente nel violino), ecco un riepilogo dei risultati che vedo dopo ogni passaggio di modifica dei dati:
Anche se le dichiarazioni di aggiornamento in questo script sono state abbastanza elaborate, questi dati sembrano mostrare che c'è molto da guadagnare da una manutenzione regolare.
Informazioni extra: idee iniziali
Sto pensando di creare un'attività notturna o settimanale. Sembra che questa attività potrebbe eseguire REBUILD o REORGANIZE.
Poiché gli indici full-text possono essere piuttosto grandi (decine o centinaia di milioni di righe), vorrei essere in grado di rilevare quando gli indici all'interno del catalogo sono sufficientemente frammentati da giustificare un REBUILD / REORGANIZE. Sono un po 'poco chiaro su ciò che l'euristica potrebbe avere senso per questo.