Warum ist ein .bak so viel kleiner als die Datenbank, von der es gesichert wird?

11

Ich habe gerade eine Sicherungskopie einer SQL Server-Datenbank erstellt. Die MDF- und LDF-Dateien umfassen zusammen etwa 29 GB, aber die .bak-Datei war nur 23 GB groß und etwa 20% kleiner.

Meine erste Vermutung, wenn eine Version eines Datensatzes kleiner als eine andere Version ist, die dieselben Daten enthält, wäre die Datenkomprimierung, aber die Komprimierung ergibt normalerweise ein viel besseres Komprimierungsverhältnis als 20%, insbesondere für hochgeordnete Daten (z. B. Datenbanktabellen). ) Auch komprimierte Daten können nicht einfach weiter komprimiert werden, aber ich weiß, dass .bak-Dateien komprimiert werden können.

Wenn die Daten also nicht komprimiert werden und nichts verworfen wird (weil der Sinn einer Sicherung darin besteht, sie anschließend in einen identischen Zustand zurückversetzen zu können), was sind dann diese 20%, die nicht berücksichtigt werden?

Mason Wheeler
quelle

Antworten:

16

Der Speicherplatz wurde den Datenbankdateien zugewiesen, aber nicht verwendet.

Sie können eine neue Datenbank erstellen, eine Größe von 10 GB festlegen und sehen, wie die Dateien diesen Speicherplatz auf der Festplatte zuweisen. Bis Sie jedoch Daten in die Datenbank einfügen, ist die Datei im Wesentlichen leer und die Größe Ihrer Sicherungsdatei ist minimal.

HTH

SQLRockstar
quelle
10

Für eine vollständige Sicherung kann die LDF normalerweise ignoriert werden

Das MDF enthält die tatsächlichen Daten

Die Bak-Datei enthält nur Datenseiten, die im MDF verwendet werden. Etwas Platz wird nicht genutzt. Dieser Bereich ist beispielsweise für Indexwiederherstellungen ein Overhead-Benutzer.

Es ist ziemlich typisch, ein 100-GB-Backup für eine Datenbank mit einem 250-GB-MDF zu haben. Wenn mein MDF die gleiche Größe wie mein Backup hat, ist dies eine rote Fahne für einen unerwarteten DB-Shrink oder einen Mangel an Speicherplatz usw.

gbn
quelle
4

Wenn eine Datenbank erstellt wird, können Sie (aus Leistungsgründen) angeben, wie viel Speicherplatz Sie den Daten- und Protokolldateien zuweisen möchten. Dieser Speicherplatz wird dann reserviert, auch wenn keine Daten in den Tabellen gespeichert sind. Es werden nur die Speicherbereiche gesichert, in die Daten geschrieben wurden.

In Ihrem Fall hätte Ihre MDF / LDF-Summe sogar 100 GB betragen können, aber Ihre Sicherung würde für die von Ihnen durchgeführte Sicherung immer noch etwa 23 GB betragen. Wenn ungefähr 1 GB Daten hinzugefügt würden, wäre Ihre MDF / LDF-Summe immer noch 100 GB, aber Ihr Backup wäre jetzt ungefähr 24 GB.

Eine vollständige Sicherung enthält alle Speicherbereiche, in denen Daten enthalten sind, sowie einen Teil der Protokolldatei. Die vollständige Sicherung enthält alle Daten ab dem Zeitpunkt, zu dem die Sicherungsaufgabe beendet wurde, und nicht nur ab dem Zeitpunkt, zu dem die Sicherungsaufgabe gestartet wurde. Aus diesem Grund wird auch ein Teil der Protokolldatei benötigt.

Stanley Johns
quelle