Postgres размер файла дампа pg_dump больше, чем pg_database_size - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть клиент, сделавший резервную копию с помощью pg_dump, его размер почти 700 ГБ, а размер pg_database_size - всего около 195 ГБ. Я уже запустил VACUUM FULL, но результат все тот же.

Как это могло быть возможно? Насколько я знаю, файл дампа должен быть меньше из-за сжатия.

Я использовал PostgreSQL версия 9.5. Сначала я думал, что это ошибка, затем я использовал двоичный файл PostgreSQL 10, но результат также тот же.

Мы используем обычную команду для резервного копирования

pg_dump -U username -d dbname > dbname.sql

Что может быть проблема?

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

"Насколько я знаю, файл дампа должен быть меньше из-за сжатия."

Ваша командная строка pg_dump показывает, что она в простом формате и не запрашивала никакого сжатия. Также вы не показываете вывод, передаваемый через программу сжатия. Таким образом, сжатие не применяется. Сжатие используется по умолчанию для пользовательского формата, но не для обычного формата.

С другой стороны, база данных автоматически сжимает некоторые данные при некоторых обстоятельствах. Такое сжатие обычно не очень хорошо, но, по-видимому, в вашем случае оно достаточно хорошо, чтобы быть лучше, чем ничего (а также преодолевать дополнительное пространство, используемое индексами). Фактическая база данных также хранит числа в двоичной форме, которая является более компактной, чем текстовая форма, используемая pg_dump.

1 голос
/ 17 апреля 2020
Файл

pg_dump может быть меньше размера базы данных по следующим причинам:

  1. pg_dump не выводит блоки индексов. Здесь хранятся только определения индексов.
  2. Если в вашей базе данных есть лодки, то размер базы данных будет выше.

Если вы SQL Дамп больше, чем база данных , возможно, у вас есть большие данные для TEXT / JSONB / JSON / BYTEA, et c. типы данных, которые поджариваются и сжимаются в PG.

...