Panoramica della frammentazione dell'indice
Cos'è la frammentazione dell'indice e perché dovrei concentrarmi su di essa: La frammentazione esiste quando l'ordine logico nell'indice (basato sul valore chiave nell'indice) non corrisponde all'ordine fisico nelle pagine indicizzate nelle pagine indicizzate nelle pagine che l'indice contiene. Ogni volta che viene eseguita un'operazione di inserimento, aggiornamento o cancellazione sui dati sottostanti, il motore del database modifica automaticamente l'indice. Ad esempio, aggiungere righe a una tabella può far sì che le righe divise memorizzino le pagine esistenti nell'indice per fare spazio all'inserimento di nuove chiavi. Col tempo, queste modifiche possono causare la dispersione delle informazioni nell'indice nel database (contenenti frammenti). La frammentazione si verifica quando l'ordine logico (basato sul valore-chiave) nelle pagine contenute nell'indice non corrisponde all'ordine fisico nel file dati. Un gran numero di indici frammentati può rallentare le prestazioni delle query perché è necessario un ulteriore I/O per trovare i dati a cui l'indice punta. Un aumento maggiore di I/O può causare una risposta lenta dell'applicazione, specialmente quando sono coinvolte operazioni di scansione.
Controlla la frammentazione dell'indice del database
Comando:
Ci sono due modi per deframmentare: riorganizzare e ricreare gli indici, ricostruire gli indici si riferisce all'eliminazione degli indici vecchi e alla ricostruzione di nuovi indici in una transazione, che riconquista lo spazio su disco rigido dell'indice originale e alloca nuovo spazio di archiviazione per creare una struttura di indici. La riorganizzazione degli indici si riferisce al non allocare nuovo spazio di archiviazione, riorganizzare i nodi foglia della struttura indice sulla base dello spazio originale, in modo che l'ordine logico e fisico delle pagine dati siano coerenti e liberare lo spazio in eccesso nell'indice.
Usa la funzione sys.dm_db_index_physical_stats per rilevare il grado di frammentazione, il campo avg_fragmentation_in_percent la percentuale di frammenti logici restituiti; in generale, Microsoft raccomanda una soglia del 30%:
avg_fragmentation_in_percent >5% e <=30%: ALTER INDEX RIORGANIZE; avg_fragmentation_in_percent >30%: RICOSTRUZIONE DELL'INDICE ALTER;
avg_fragmentation_in_percent: Percentuale di frammentazione dell'indice, se la frammentazione è inferiore al 10%~20%, è improbabile che la frammentazione rappresenti un problema,Se la frammentazione dell'indice è al 20%~40%, la frammentazione può essere un problema, ma la risoluzione dell'indice può essere eliminata tramite la riorganizzazione dell'indice, e la frammentazione su larga scala (quando la frammentazione è superiore al 40%) può richiedere la ricostruzione dell'indice.
Consulta le informazioni di frammentazione per tutti gli indici di una data tabella
Reindicizzazione delle tabelle
Ricostruisci l'indice di tutte le tabelle dell'intero database
Risorse:Il login del link ipertestuale è visibile.
|