2010-03-22 11 views
6

Per i principianti, non sono un DBA e sto lavorando alla ricostruzione degli indici.La ricostruzione degli indici non modifica la percentuale di frammentazione per gli indici non cluster

Ho fatto uso dello stupefacente script TSQL da msdn per modificare l'indice in base alla percentuale di fragmenti restituita da dm_db_index_physical_stats e se la percentuale di frammenti è superiore a 30, eseguire un REBUILD o fare un REORGANIZE.

Quello che ho scoperto è stato, nella prima iterazione, ci sono stati 87 record che aveva bisogno defrag.I correva lo script e tutti i 87 indici (cluster & cluster) sono stati ricostruiti o indicizzato. Quando ho ottenuto le statistiche da dm_db_index_physical_stats, c'erano ancora 27 record che avevano bisogno di defrag e tutte queste tesi erano indici NON CLUSTER. Tutti gli indici in cluster sono stati corretti.

Indipendentemente dal numero di volte in cui eseguo lo script per deframmentare questi record, ho ancora gli stessi indici da deframmentare e la maggior parte con la stessa percentuale di frammentazione. Nulla sembra cambiare dopo questo.

Nota: non ho eseguito alcun inserimento/aggiornamento/eliminazione nelle tabelle durante queste iterazioni. Ancora la ricostruzione/riorganizzazione non ha comportato alcun cambiamento.

Maggiori informazioni: Utilizzo di SQL 2008 Script come disponibili in MSDN http://msdn.microsoft.com/en-us/library/ms188917.aspx

Potrebbe spiegare il motivo per cui questi 27 registrazioni di indici non cluster non vengono modificate/modificato?

Qualsiasi aiuto su questo sarebbe molto apprezzato.

Nod

+0

Si può pelase fornire l'output con alcune statistiche di uno dei 27 come esempio? – TomTom

+0

Ho incollato sotto uno dei risultati dell'indice per 3 iterazioni. la prima iterazione ha cambiato la frammentazione% un po 'dove il 2 ° e il 3 ° non hanno avuto alcun impatto. Index = [IX_BatchNumber] Frammento% restituito dal dm_db_index_physical_stats Iterazione 1 = 52,6315789473684 Iterazione 2 = 41,1764705882353 Iterazione 3 = 41,1764705882353 \t Ci sono altri casi indteresting dove alla presenza del primo defrag il valore frammentazione% era 30 e in quello successivo è salito a 40 e rimane lì per sempre. Ma questo è successo solo per un paio di record. Grazie. – Noddy

risposta

12

SQL Server non ricostruire gli indici che non sono abbastanza grandi. Date un'occhiata al framment_count (che è uno dei campi nella vista sys.dm_db_index_physical_stats), probabilmente è piuttosto basso per quei 27 indici.

+0

Sto riscontrando lo stesso problema con un indice con oltre un milione di pagine ed il 31% frammentato. Vorrei davvero una risposta. –

+0

FYI vedere le risposte su dba.stackexchange.com qui: http://dba.stackexchange.com/questions/18372/why-index-rebuild-does-not-reduce-index-fragmentatation –

Problemi correlati