2010-03-22 2 views
6

Pour commencer, je ne suis pas un administrateur de base de données et je travaille à la reconstruction des index. J'ai utilisé le script TSQL étonnant de msdn pour modifier l'index basé sur le pourcentage fragmente retourné par dm_db_index_physical_stats et si le pourcentage de fragment est supérieur à 30 alors faites un REBUILD ou faites un REORGANIZE. Ce que j'ai découvert était, dans la première itération, il y avait 87 enregistrements qui ont eu besoin de defrag.J'ai exécuté le script et tous les 87 index (clustered non clusterisés &) ont été reconstruits ou réindexés. Quand j'ai obtenu les statistiques de dm_db_index_physical_stats, il y avait encore 27 enregistrements qui nécessitaient une défragmentation et toutes ces thèses étaient des index NON CLUSTERED. Tous les index clusterisés ont été corrigés.La reconstruction des index ne modifie pas la fragmentation% pour les index non clusterisés

Peu importe combien de fois je lance le script pour défragmenter ces enregistrements, j'ai toujours les mêmes index à défragmenter et la plupart d'entre eux avec la même fragmentation%. Rien ne semble changer après cela.

Remarque: Je n'ai pas effectué d'insertions/mises à jour/suppressions sur les tables au cours de ces itérations. Cependant, la reconstruction/réorganisation n'a pas entraîné de changement.

Plus d'informations: Utilisation de SQL 2008 Script comme disponible dans msdn http://msdn.microsoft.com/en-us/library/ms188917.aspx

Pourriez-vous s'il vous plaît expliquer pourquoi ces 27 dossiers d'index non cluster ne sont pas modifiés/modifié?

Toute aide à ce sujet serait grandement appréciée.

Nod

+0

Pouvez-vous fournir à la sortie de Pelase des statistiques de l'un des 27 comme exemple? – TomTom

+0

J'ai collé ci-dessous l'un des résultats de l'index pour 3 itérations. la première itération a changé la fragmentation% un peu où les 2ème et 3ème n'ont eu aucun impact. Index = [IX_BatchNumber] Fragment% retourné par dm_db_index_physical_stats Iteration 1 = 52,6315789473684 Iteration 2 = 41,1764705882353 Iteration 3 = 41,1764705882353 \t Il y a d'autres cas indteresting où avant la première defrag la valeur de fragmentation% était de 30 et dans le prochain a sauté à 40 et reste là pour toujours.Mais ceci est arrivé pour seulement quelques disques. Merci. – Noddy

Répondre

12

SQL Server ne se rétablira pas les index qui ne sont pas assez grand. Jetez un coup d'oeil sur le fragment_count (c'est l'un des champs dans la vue sys.dm_db_index_physical_stats), il est probablement assez faible pour ces 27 index.

+0

J'ai le même problème avec un index qui a plus d'un million de pages et qui est fragmenté à 31%. Vraiment voudrais une réponse. –

+0

FYI voir les réponses sur dba.stackexchange.com ici: http://dba.stackexchange.com/questions/18372/why-index-rebuild-does-not-reduce-index-fragmentatation –

Questions connexes