首页 > 解决方案 > VACUUM FULL 表所需的空间

问题描述

来自关于完全真空的 PostgreSQL 10.4 手册:

请注意,它们还临时使用大约等于表大小的额外磁盘空间,因为表和索引的旧副本在新副本完成之前无法释放

我在许多不同的地方读过这篇文章,并以各种方式表达了这一点。一些表明所需的空间最多等于清理表的大小。暗示它可能只需要足够的空间来存储生成的清理表,即大小在 [0-size_of_original_table] 范围内,具体取决于表中有多少死行。

我的问题是:对表进行完全真空是否总是需要等于原始表大小的空间,还是取决于表中的活动行数?

标签: postgresqlpostgresql-10vacuum

解决方案


所需的额外空间VACUUM (FULL)取决于表中的活动行数。

在此期间发生VACUUM (FULL)的是写入表的新副本。所有活动元组(= 行版本)和尚未删除的死元组将写入此新副本。

交易完成后,旧副本将被删除。


推荐阅读