Postgres pg_dump 转储文件大小大于 pg_database_size

ind*_*lim 7 linux postgresql pg-dump postgresql-9.5

我有一个客户使用 pg_dump 进行了备份,其大小几乎为 700GB,而 pg_database_size 仅为 195GB 左右。我已经运行了 VACUUM FULL 但结果仍然相同。

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

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

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

pg_dump -U username -d dbname > dbname.sql
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

Vib*_*mar 6

由于以下原因,pg_dump 文件可能小于数据库大小:

  1. pg_dump 不转储索引块。它只存储索引的定义。
  2. 如果您的数据库有船,那么数据库的大小会更大。

如果您的 SQL 转储比数据库大,则可能有更大的 TEXT/JSONB/JSON/BYTEA 等数据类型的数据,这些数据类型会在 PG 中进行烘烤和压缩。

  • 啊! 知道了!唯一可能的原因是 JSON/JSONB/TEXT/BYTEA。这些在数据库中被烘烤和压缩。 (2认同)