Warum reduziert index REBUILD die Indexfragmentierung nicht?


Antworten:


39

Wenn ein Index sehr klein ist (ich glaube weniger als 8 Seiten), werden gemischte Ausmaße verwendet. Daher sieht es so aus, als ob noch Fragmentierung vorhanden ist, da die Gehäuseausdehnung Seiten aus mehreren Indizes enthält.

Aus diesem Grund und aufgrund der Tatsache, dass in einem so kleinen Index die Fragmentierung normalerweise vernachlässigbar ist, sollten Sie eigentlich nur Indizes mit einem bestimmten Seitenschwellenwert neu erstellen. Es wird empfohlen, fragmentierte Indizes mit mindestens 1000 Seiten neu zu erstellen .


34

Dies kann auch bei sehr großen Indizes vorkommen.

Ich hatte einige Indizes auf einer Tabelle mit ungefähr 700 m Zeilen, die ich nicht unter ungefähr 30% defragmentieren konnte. Das Problem bestand darin, dass nicht genügend zusammenhängender freier Speicherplatz in der Datenbank vorhanden war, um den Index nacheinander anzuordnen.

Um einen sehr großen Index zu umgehen, der nicht defragmentiert wird, ist es die BEST-Lösung, die Größe einer neuen Datenbank vorab festzulegen, alle Objekte in diese Datenbank zu verschieben und die Indizes dort neu zu erstellen.


1

Ich habe seit einiger Zeit damit zu kämpfen und wie JNK dachte ich, das Problem sei weiterhin freier Speicherplatz und physische Fragmentierung auf der Festplatte. Was tun Sie dagegen in einem SSD-SAN?

Ich habe jetzt herausgefunden, dass es eine gute Idee sein kann, nur index_level = 0 einzuschließen. So wird es in Ola Hallengrens Drehbuch gemacht.

Eine weitere Verbesserung ist zu tun

 REBUILD With (maxdop = 1)

Auf diese Weise sorgen Sie für maximale Verbesserung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.