Defragmentierung - Neuerstellen von Indizes SQL Server 2005

8

Ich untersuche die Defragmentierung von Datenbanken und es scheint, dass die folgende SQL-Anweisung das ist, wonach ich suche:

ALTER INDEX ALL ON mytablename
REBUILD WITH(ONLINE = ON)

Wenn ich die Informationen abrufe sys.dm_db_index_physical_stats, sehe ich, dass die Prozentsätze sehr hoch sind - 70, 80 und 90 Prozent (!). Das sagt mir also, dass ich eine will REBUILDund keine REORGANIZE.

Ich habe ein paar Fragen, bevor ich diese ausführe REBUILDS.

  1. Kann es ausgeführt werden, während Prozesse die Datenbank verwenden? ( ONLINE = ON sagt mir ja, aber ich möchte bestätigen, dass nichts abstürzt.) Oder ist es besser zu laufen, wenn es nicht verwendet wird?
  2. Ich lese, REBUILDdass die Dinge langsamer laufen. Ist das nur so, während die Indizes neu erstellt werden? (oder für immer danach)
  3. Wie lange dauert es, alle Indizes bzw. die einzelnen Indizes neu zu erstellen?
  4. Gibt es irgendwelche Nebenwirkungen oder andere Informationen, die ich beachten muss? Dies ist eine Produktions- / Live-Datenbank.

EDIT: Und schließlich, was ist der beste Weg, um es wieder aufzubauen? Durchlaufen Sie alle Objekte mit einem Prozentsatz von mehr als 30? Oder?

Vielen Dank!

Rivka
quelle
4
Beachten Sie, dass für Online-Indexvorgänge die Enterprise Edition von SQL Server erforderlich ist.
Joe Stefanelli
Vielen Dank. Ja, wir haben die Enterprise Edition.
Die einzige Möglichkeit, festzustellen, wie lange es dauern wird, besteht darin, die Datenbank auf einen ähnlichen Server (dieselbe Hardwarekonfiguration) zu kopieren und dort die Neuerstellung auszuführen.
Datum

Antworten:

7
  1. Ja, Sie können neu erstellen, während die Datenbank mit aktiven Benutzern online ist. Es ist definitiv besser, wenn möglich außerhalb der Spitzenzeiten.
  2. Während der Neuerstellung werden Ihre Abfragen langsamer ausgeführt, hauptsächlich aufgrund des E / A-Overheads bei der Neuerstellung des Index. Wie auffällig dies ist, hängt von den Besonderheiten Ihres Systems ab. Die Leistungsstrafe ist nur während des Wiederaufbaus - nicht für immer danach.
  3. Auch hier hängt die Dauer der Neuerstellung von Ihrem spezifischen Setup ab. Sie sollten versuchen, dies auf einem gleichwertigen Entwicklungs- oder Staging-Server auszuführen.
  4. Keine weiteren Nebenwirkungen. Sobald der Wiederaufbau abgeschlossen ist, können Sie wieder wie gewohnt arbeiten.
Yuck
quelle
2
Für Punkt 4 sollte er sich bewusst sein, dass der von seiner Datenbank auf der Festplatte belegte Speicherplatz erheblich zunimmt, da zwei Versionen des Wiederherstellungsindex berücksichtigt werden müssen. Im Wesentlichen wird sein größter Index um einen Platz erweitert, der gleich groß ist.
JNK
@JNK Ja, guter Punkt. Danke, dass du das verstanden hast.
Yuck
4

Ich würde auch dringend empfehlen, sich die Indexwartungsskripte von Ola anzusehen . Kein Grund, das Rad neu zu erstellen. Es ist ein sehr flexibles Skript und viele Datenbankadministratoren in der Community verwenden es und empfehlen es weiter.

JohnS
quelle