| Datenbank Dateien verkleinern - Datenbank Dateien verkleinern Teil 1 - Eine Beobachtung |
|
|
|
| SQL Server - SQL 2005 Administration | |||||||||
| Geschrieben von: Fumus | |||||||||
| Samstag, 07. Juni 2008 um 23:34 | |||||||||
Seite 2 von 2
Wie im Artikel "Datenbank Dateien verkleinern Teil 1" beschrieben, ist es nicht mit einem kleinen Klick getan und schon sind Datenbank Dateien verkleinert. Warum und wieso die Verkleinerung nicht einfach von statten geht, erklärt sich den Hintergrundaktivitäten... Verkleinern der DatenbankIm Prinzip kann jede Datei im SQL Server verkleinert werden. Allerdings gibt es gravierende Unterschiede zwischen Datendateien und Transktionsprotokolldatei. Die Dateien werden hierbei am Ende abgeschnitten Sofern sich am Ende der Datei nich Seiten befinden (ca. 8 kb), so werden diese vom Ende an den Teil verschoben, der nicht abgeschnitten wird. Die gewünschte Zielgröße kann dabei angegeben werden. Allerdings unterliegt diese eingen Einschränkungen:
Verkleinern des TransaktionsprotokollsDas Verkleinern des Transaktionsprotokolls ist anderen Umständen unterworfen. Im Prinzip besteht das Transaktionsprotokoll aus virtuellen Dateien. Die virtuellen Dateien haben keine feste Größe und keine feste Anzahl. Sie werden beim Erstellen dynamisch angelegt. Sie können administrtaiv zumindest beinflusst werden durch etwas Angabe der Mindestgröße der Protokolldatei und der Vergrößerungsraten. Aus Performancegründen sollte diese bereits zu Beginn sehr "realistisch" eingeschätzt werden. Sprich: Wie groß wird das Protokoll werden...schwierige Entscheidung ;-) Die Einträge in das Protokoll funktionieren so ähnlich wie meinen Belege für die Steuer. In einer Art Schuhkarton System, die alle aufeinandergestapelt die jeweiligen Protokolleinträge enthalten, werden volle Kartons geleert. Das Leeren kann entweder durch ein Backup oder durch eine TRUNCATE passieren. Nur durch das entfernen inaktiver Einträge ist es möglich, dass das Protkoll nicht permanent wächst. Dies passiert letztenendlich, wenn das Ende des logischen Protokolls auf den Anfang des logischen Protokolls trifft. Neue Protokolleinträge werden dabei jeweils auf den vorherigen draufgelegt. Die komplette zeitlich aufeinander folgenden Einträge nennt man logisches Protokoll.
(Bilder zu Aritkel stammen aus der Microsoft Onlinedokumentation zu SQL Server 2005.) Aus diesen Fakten erklärt sich auch der Umstand, dass Transaktionsprotokolle nicht auf eine beliebige Größe verkleinert werden können, sondern um die Größe der geleerten , inaktiven virtuellen Dateien. Daher sollte man vor jeder Verkleinerung nochmals eine Sicherung des Transaktionsprotokolls anwenden, um einen größtmöglichen Anteil an inaktiven Einträgen zu entfernen. Achtung: Das Verkleinern eines Transaktionsprotokolls kann im Falle von Sperren blockiert werden. Daher ist immer günstig die Verkleinerung per dbcc zu arrangieren, da hier mehr Information zurückgegeben werden. Bspw: dbcc shrinkdatabase (Adventureworks,10)
oder etwa:
|
|||||||||
| LAST_UPDATED2 |






