it-swarm.com.de

Warum reduziert Index REBUILD die Indexfragmentierung nicht?

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 insbesondere bei kleinen Indizes der Fall zu sein.

30
jrara

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 auch aufgrund der Tatsache, dass in einem so kleinen Index die Fragmentierung normalerweise vernachlässigbar ist, sollten Sie Indizes nur mit einem bestimmten Seitenschwellenwert neu erstellen. Es wird empfohlen, fragmentierte Indizes mit einem Minimum von 1000 Seiten neu zu erstellen.

40
Thomas Stringer

Dies kann auch bei sehr großen Indizes passieren.

Ich hatte einige Indizes für eine Tabelle mit etwa 700 m Zeilen, die ich nicht unter 30% defragmentieren konnte. Das Problem war nicht genügend zusammenhängender freier Speicherplatz in der Datenbank, um den Index nacheinander anzuordnen.

Um einen sehr großen Index zu umgehen, der nicht defragmentiert wird, besteht die BESTE Lösung darin, eine neue Datenbank vorab zu skalieren, alle Ihre Objekte in diese Datenbank zu verschieben und dort Ihre Indizes neu zu erstellen.

34
JNK

Ich habe seit einiger Zeit damit zu kämpfen und wie JNK dachte ich, dass das Problem weiterhin freier Speicherplatz und physische Fragmentierung auf der Festplatte war. 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.

1
vikjon0