Ich versuche, eine dbcc-Schrumpfdatei in Blöcken von 1 GB für eine Datenbank auszuführen, in der 95% der Daten archiviert und gelöscht wurden. Ich habe eine 235-GB-Datei, in der 9 GB Daten / Indizes sind. Ich möchte dies auf 50 GB reduzieren. Ich weiß, dass das Verkleinern von Datenbankdateien schlecht ist, Fragmentierung usw. verursacht. Im Rahmen der Datenbereinigung / -verkleinerung haben wir auch ein IDnex-Skript zum erneuten Erstellen.
Wenn ich mein dbcc-Shrinkfile-Skript für die Datenbank auf meiner eigenen Workstation (Quad-Core, 12 GB RAM, 2 x SATA-Laufwerke) ausführe, dauert das Shrink etwa 8 bis 10 Minuten.
Wenn Sie den identischen Code für eine identische Kopie der Datenbank nach der Datenbereinigung ausführen, dauert es in unserer Testumgebung (über 80 Kerne, 128 GB RAM, SSD-SAN) 70 Minuten. Zu beachten ist, dass zum Zeitpunkt der Ausführung der Verkleinerungsdatei auf diesem Server nur geringe Aktivitäten ausgeführt werden. Es wurde 4 Mal mit identischen Ergebnissen ausgeführt.
Ich habe dann einen anderen Ansatz gewählt, indem ich die verbleibenden 9 GB in eine andere Dateigruppe und physische Datei verschoben habe. Das Ausführen von dbcc shrinkfile für die leere 230-GB-Datei, um sie auf 50 GB zu verkleinern, auf meiner eigenen Workstation dauert <1 Minute.
Mit demselben Ansatz dauert es in der Testumgebung erneut mehr als 70 Minuten.
Ich habe während und nach dem Skript von Brent Ozar während des 70-minütigen Laufs in der Testumgebung eine Momentaufnahme der Wartestatistiken gemacht, und die Wartetypen kehrten zurück und zeigten nichts, worüber man sich Sorgen machen müsste. Top 3 Reihen unten:
Zweite Abtastzeit Abtastdauer in Sekunden wait_type Wartezeit (Sekunden) Anzahl der Wartezeiten Durchschn. Ms pro Wartezeit 2013-05-28 11: 24: 22.893 3600 WRITELOG 160.8 143066 1.1 2013-05-28 11: 24: 22.893 3600 CXPACKET 20.9 13915 1.5 2013-05-28 11: 24: 22.893 3600 PAGELATCH_EX 11.1 443038 0.0
Das Windows-Ereignisprotokoll zeigt nichts Ungewöhnliches. Ich bin gerade dabei, mich zu kratzen, warum es auf der Ninja-Hardware im Vergleich zu meiner eigenständigen Workstation so lange dauert.
sys.dm_os_latch_stats
@@version
auf beiden