Warum reduziert index REBUILD die Indexfragmentierung nicht?

30

Ich habe ALTER INDEX REBUILD verwendet, um die Indexfragmentierung zu entfernen. In einigen Fällen scheint REBUILD diese Fragmentierung nicht zu entfernen. Was sind die Gründe, warum REBUILD die Fragmentierung nicht entfernt? Dies scheint vor allem bei kleinen Indizes der Fall zu sein.

jrara
quelle
Related: dba.stackexchange.com/questions/5365/…
Mark Storey-Smith

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 .

Thomas Stringer
quelle
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.

JNK
quelle
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.

vikjon0
quelle