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 REBUILD
und keine REORGANIZE
.
Ich habe ein paar Fragen, bevor ich diese ausführe REBUILDS
.
- 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? - Ich lese,
REBUILD
dass die Dinge langsamer laufen. Ist das nur so, während die Indizes neu erstellt werden? (oder für immer danach) - Wie lange dauert es, alle Indizes bzw. die einzelnen Indizes neu zu erstellen?
- 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!
Antworten:
quelle
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.
quelle