Auf dieser MSDN-Seite steht, ob Sie basierend auf dem Grad der Fragmentierung neu organisieren oder neu erstellen sollten:
5% bis 30% -> ALTER INDEX REORGANIZE Über 30% -> ALTER INDEX REBUILD WITH (ONLINE = ON) *
Wir haben jedoch festgestellt, dass REORGANIZE auch bei einer sehr hohen Fragmentierung (über 95%) auf großen und kleinen Tabellen einwandfrei funktioniert. (Die Fragmentierung sinkt auf weniger als 1%).
Warum sagt die MSDN-Seite das? Soll es nicht so funktionieren wie bei mir?
Oder gibt es einen Nachteil, den ich vermisse? (Ein verstecktes Problem, wenn ich nicht neu aufbaue?)
sql-server
sql-server-2012
index
Vaccano
quelle
quelle
Antworten:
Lassen Sie mich einen anderen Teil derselben Seite zitieren, auf dem im Grunde IT DEPENDS steht - Hervorhebung von mir:
Es gibt keine wirklich gute Antwort darauf, außer "es kommt darauf an" ... dies sind nur allgemeine Richtlinien und können abhängig von der Anzahl der Zeilen, den Spalten in Ihrem Index, ihren Datentypen und der Breite des Index angemessen sein oder auch nicht , was sonst wird zwischen den Schreibvorgängen in diese Tabellen usw. auf die Festplatte geschrieben?
Wie groß sollte ich Tempdb sein, was ist ein guter Schwellenwert für PLE und welche Art von Auto sollte ich kaufen, die Antwort ist dieselbe: ES HÄNGT AB .
quelle
@ AaronBertrand hat eine sehr gute Antwort und ist richtig - es kommt darauf an. Ich möchte hinzufügen, dass Sie nur eine Metrik betrachten - die Indexfragmentierung. Das ist ein guter Anfang, aber es gibt noch andere Dinge zu beachten.
Stellen Sie sich das folgende Szenario vor (mit AdventureWorks2014):
Wir erstellen ein neues automatisch erstelltes Statistikobjekt (
_WA_Sys_00000006_44CA3770
in diesem Beispiel) durch FilternSalesOrderID
und löschen dann Zeilen (~ 30.000 davon). Wir führen dann weitere Änderungen ein, indem wir Zeilen mit einer bestimmten löschenProductID
. Dies ist wichtig, da es sich um eine führende Spalte in mindestens einem dieser Indizes / Statistiken handelt, die wiederum aus Gründen der Selektivitätsberechnung (Statistik) und der B-Tree-Durchquerung (Index) wichtig ist.Die Indexfragmentierung ist nicht so schlecht, also lasst uns neu organisieren.
Durch eine Umstrukturierung werden keine Änderungen vorgenommen.
Lassen Sie uns wieder aufbauen:
Ok, unsere Fragmentierungszahlen sind bescheiden besser, aber nicht signifikant und Ihrer Meinung nach den Aufwand für den Wiederaufbau im Vergleich zur Reorganisation möglicherweise nicht wert.
Es gibt jedoch noch ein paar andere erwähnenswerte Dinge.
_WA_Sys_00000006_44CA3770
).Fazit
Es gibt mehr zu bewerten, als ob Sie gute Defragmentierungsraten erhalten oder nicht. Obwohl dies für IO sicherlich wichtig ist, fand ich es auch sehr hilfreich, meine Systeme zu erkunden und zu prüfen, ob ich feststellen kann, wie ich sie am besten warten kann, anstatt sie blind zu aktualisieren, neu zu erstellen und neu zu organisieren.
quelle
Der große Unterschied in meiner Umgebung besteht darin, dass Reorganize Single-Threaded ist und Rebuild so parallel wie Prozessoren ausgeführt werden kann. Die Neuerstellung bietet außerdem den zusätzlichen Vorteil, dass Sie Ihre Statistiken aktualisieren können, sodass Sie auf separate Statistikaktualisierungen verzichten können, wenn Sie sie neu erstellt haben.
Aus meiner Sicht habe ich bei einigen großen Tabellen (100 GB bis Multi-Terabyte) so ziemlich alles neu erstellt. Ich habe gesehen, wie Reorganize 8 Stunden mit einem PK (300 GB Tisch) verbracht und kaum eine Beule gemacht hat. Ich bin allein verantwortlich für etwa 100 TB Daten auf 8 Servern, und unsere Wartungsfenster sind nicht die längsten (1 bis 7 Uhr morgens).
Ich verwende derzeit Ola Hallengren- Skripte, möchte aber in den kommenden Monaten zu Minion Reindex wechseln , da sie die Möglichkeit bieten, die Objekte, an denen Sie arbeiten möchten , vorab abzurufen, sodass das gesamte Wartungsfenster genutzt werden kann bei der Wartung, anstatt Fragmentierungsdaten zu sammeln. Die Funktion zum Sammeln von Fragmentierungsdaten kann auch im LIMITED-Modus für größere Tabellen eine Weile ausgeführt werden.
quelle