PostgreSQL 10.4手册中有关全真空的说明:
请注意,它们还临时使用大约等于表大小的额外磁盘空间,因为在新表和索引完成之前,无法释放旧的表和索引。
我在许多不同的地方读过这篇文章,措辞也多种多样。有些表示所需的空间最多等于空表的大小。暗示它可能只需要足够的空间来存储产生的空表,即大小在0- size _ of _原_ table范围内,这取决于表中有多少死行。
我的问题是:做一个完全真空的表总是需要一个与原始表大小相等的空间,还是取决于表中活行的数量?
发布于 2018-07-16 13:17:58
VACUUM (FULL)所需的额外空间取决于表中活行的数量。
在VACUUM (FULL)过程中,会编写一个新的表副本。所有活元组(=行版本)和不能删除的死元组都将写入这个新副本。
事务完成后,旧副本将被移除。
发布于 2018-07-27 18:16:56
建议有至少等于数据库中最大表大小的空闲空间。
也就是说,如果数据库大小为10 2GB,数据库中最大的表大小为2GB。然后,您必须有至少2GB的额外空间在您的磁盘上,以顺利完成真空。
因为真空填充将创建表的新副本,不包括死行,然后删除现有表。
https://stackoverflow.com/questions/51361463
复制相似问题