linux - 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
可能是什么问题呢?
解决方案
“据我所知,由于压缩,转储文件应该更小。”
您的 pg_dump 命令行显示它是纯格式并且没有请求任何压缩。您也没有显示通过压缩程序传输的输出。所以没有应用压缩。默认情况下,自定义格式使用压缩,而不是普通格式。
另一方面,数据库在某些情况下会自动压缩一些数据。这种压缩通常不是很好,但显然在您的情况下,它足以胜过没有(以及克服索引使用的额外空间)。实际的数据库也以二进制形式存储数字,这比 pg_dump 使用的文本形式更紧凑。
推荐阅读
- java - 如何验证函数的多个输入?
- java - 如何在 Weka 中使用 .arff 文件预测未标记的数据?
- bash - 为什么我在 /etc/init.d 中的脚本在 rc0.d 和 rc6.d 中带有 K 符号链接,在 rc5.d 中带有 S 符号链接在关机时不起作用?
- javascript - 如何在 JSX 中打印 props 对象,我收到 TypeError: Cannot read property of undefined
- angular - 如何通过单击 ag-grid 中的列标题来获取列名
- nested - Rails 有两个嵌套属性,“posts”和“issues”上的“comments” Not Saving Rollback
- cplex - 如何在 CPLEX OPL 中编写平均约束?
- c# - 讲述人未按预期读取 TextBlock 中的文本。仅在选定的 TextBox 中
- python - 是否可以在 python 中的函数上使用模式匹配?比如,一个可以响应多个调用的函数
- php - 如何更新数据库中的 json 字段 laravel?