Frage

Ich hatte eine Tabelle mit über 70 Millionen Datensätzen in einer SQL-Server-Datenbank. Ich habe diese Tabelle (eine einmalige Sache) fallen gelassen, um Platz auf der Festplatte zu freisetzen, aber es sieht so aus, als ob sich die Größe nicht viel geändert hat. Ich sehe, dass ich die DB auf ein Minimum verkleinern kann.

Ist das der Weg, es zu tun?

Das letzte Mal, als ich mit SQL Server Management Studio einen Schrumpfen machte, dauerte es einige Stunden, bis ich abgeschlossen war. Gibt es einen schnelleren Weg?

enter image description here

War es hilfreich?

Lösung

Wenn Sie eine Tabelle fallen lassen, werden der Speicherplatz in der Datenbank freigelassen, löst den Speicherplatz jedoch nicht wieder an Windows ab. Dies erfordert das Verkleinern der Datenbankdatei. Wir möchten jedoch nicht, dass die Datenbankdatei voll ist. Wir möchten viel freien Speicherplatz, damit wir die Datendatei nicht häufig ausbauen müssen, wenn wir mehr Daten laden. Dies führt zu Fragmentierung der Datendatei auf den physischen Festplatten.

Um das Schrumpfen schneller zu machen, gibt es keine Möglichkeit, es schneller zu machen. Das Verkleinern der Datenbank erfordert das Lesen und Umschreiben der meisten Daten in der Datenbank, damit der gesamte Weißraum aus der Datenbankdatei zurück zum Betriebssystem freigegeben werden kann. All dieses IO braucht Zeit und verursacht viele Fragmentierungsprobleme.

Andere Tipps

Sie möchten sehr sorgfältig über DBCC Shrymfile lesen.

http://technet.microsoft.com/en-us/library/ms189493.aspx

Im Allgemeinen möchten Sie Ihre Datenbank nicht auf die kleinstmögliche Größe auf der Festplatte verkleinern. Sie möchten SQL Server mit viel Platz lassen, damit er nicht viel wachsen muss. Die Antwort hier hat viele nützliche Informationen:

https://stackoverflow.com/questions/4522719/to-dbcc-shrinkdatabase-or-not-dbcc-shrinkdatabase-thats-the-question

Schrumpf ist ein ziemlich teures Verfahren und kann Stunden dauern. Um den Speicherplatz am effizientesten zu verwenden, können Sie Tabellen in eine neue Dateigruppe übertragen, wobei Clustered -Indizes vorbehandelt und fallen. Ich persönlich bevorzuge dies, weil es einfacher ist, diesen "Schrumpf" in mehreren Schritten und vorhersehbarer zu machen- also leichter zu planen. Wenn Sie mit DBCC Shrink beginnen, wissen Sie nicht, wie viel Zeit es dauern wird.

Update (dank Mrdennny für das Hinweis darauf): Dies ist ein sehr spezifischer Ansatz und kann nur verwendet werden, wenn Sie eine schreibgeschützte Datenbank (wie Data Warehouse) haben Sake der Konsistenz. Um Zeit zu sparen und die maximale Leistung von IT zu gewinnen, können Sie die Datenbank auf einfache Wiederherstellungsmodell wechseln und Tabrock -Hinweis verwenden. Dadurch kann das System minimale Protokollierung verwenden und viel weniger Schriften in Transaktionsprotokolle durchführen.

Schauen Sie sich diesen Artikel an: http://itknowledgeexchange.techtarget.com/sql-server/deleting-lob-data-and-shrinking-the-database/

"Die Lösung, die wir uns ausgedacht haben, war eigentlich ziemlich einfach. Die Datenbank löscht wie gewohn . "

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top