Größe vom Dumpfile versus angezeigt DB-Größe

Ich hatte schon mal ein Thema zu der Größe von Dumpfiles (plain nicht kompremiert) angelegt.

Ich habe eine Datenbank mit pg_dump -B –clean ….. ohne weitere Parameter gedumpt. Das Dumpfile ist 896 GByte groß. Benutzt man die Funktion pg_database_size, dann wird eine Größe von 252 GB angezeigt.

Die Datenbank enthält viele Blobs/Clobs (text/bytea).

In einer früheren Antwort hatte Laurenz erklärt, dass bytea-Werte hexadezimal im Dump dargestellt werden. Somit sollte sich das Dumpfile in der Größe von max. 500-520 GB bewegen.

Warum ist das Dumpfile aber mehr als 3x so groß ?

Die Datenbank enthält westeuropäische Texte (keine exotischen Multibyte Character).

Was kann denn der Grund für ein derartiges Aufblasen des Dumpfiles sein ?

Postgres komprimiert Daten die in text oder bytea Spalten gespeichert sind.

Im der Dump-Datei nehmen die Binärdaten durch die Hex-Codierung doppelt so viel Platz ein, wie der nicht komprimierte Wert.

Wenn das gut komprimierbare Daten sind, dann kann der Unterschied zwischen Speicherbedarf auf der Platte und im Dump File recht groß werden.

Ich habe mal ein 17MB PDF in Postgres gespeichert. In der Datenbank braucht die Spalte 7MB, im (SQL) Dump sind es dann 35MB - also fünf mal größer als in Postgres.

1 „Gefällt mir“

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.