【发布时间】:2018-01-08 15:33:49
【问题描述】:
来自 PostgreSQL(相对)新手的快速问题:
我们运行一个批处理,作为其最后一步,删除大部分以前的批处理。
磁盘空间是一个问题,因此我们需要确保 PostgreSQL 自行清理。
除了强制 PostgreSQL 更快地进行垃圾收集之外,在批处理结束时显式调用 VACUUM 与让 auto-VACUUM 守护进程处理它之间有什么区别吗?有什么理由推荐一种方法而不是另一种方法吗?
谢谢!
【问题讨论】:
-
手动 VACUUM 在 I/O 上会比 autovacuum 更难一些,因为后者旨在最大限度地减少对服务器的影响。请注意,VACUUM/autovacuum 不会回收空间,它们只是将插槽标记为可以重用。如果您确实需要回收空间,您可能需要调查 CLUSTER 或 VACUUM FULL 等。
-
另外:也许您可以将最终结果写入新表并删除旧表,而不是删除大部分表。这可能会更快,并且会自动回收空间。
标签: postgresql vacuum autovacuum