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.
30
Antworten:
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 .
quelle
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.
quelle
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
Auf diese Weise sorgen Sie für maximale Verbesserung.
quelle