首页 > 解决方案 > Postgres pg_dump 转储文件大小大于 pg_database_size

问题描述

我有一个客户端使用 pg_dump 进行了备份,它的大小几乎是 700GB,而 pg_database_size 大约是 195GB。我已经运行了 VACUUM FULL 但结果仍然相同。

这怎么可能?据我所知,由于压缩,转储文件应该更小。

我使用 PostgreSQL 版本 9.5。首先我认为这是一个错误,然后我使用了 PostgreSQL 10 的二进制文件,但结果也是一样的。

我们使用常规命令进行备份

pg_dump -U username -d dbname > dbname.sql

可能是什么问题呢?

标签: linuxpostgresqlpostgresql-9.5pg-dump

解决方案


“据我所知,由于压缩,转储文件应该更小。”

您的 pg_dump 命令行显示它是纯格式并且没有请求任何压缩。您也没有显示通过压缩程序传输的输出。所以没有应用压缩。默认情况下,自定义格式使用压缩,而不是普通格式。

另一方面,数据库在某些情况下会自动压缩一些数据。这种压缩通常不是很好,但显然在您的情况下,它足以胜过没有(以及克服索引使用的额外空间)。实际的数据库也以二进制形式存储数字,这比 pg_dump 使用的文本形式更紧凑。


推荐阅读