来自PostgreSQL博客
VACUUM回收死元组占用的存储空间。在正常的PostgreSQL操作中,更新删除或废弃的元组不会从其表中物理删除;它们一直存在,直到VACUUM完成。因此,有必要定期执行VACUUM,尤其是在频繁更新的表上。
所以,我在使用jdbc的java应用程序中遇到了性能优化问题。所以我的问题是VACUUM是在JDBC事务中的某个地方执行还是需要显式设置?
答案 0 :(得分:1)
虽然引用说实话,但它忽略了这样一个事实:大约十年左右,PostgreSQL已经让autovacuum daemon自动完成这项工作。
通常你不必担心自己。只有在具有非常高的写入活动的表格上,您必须将autovacuum调整为更具侵略性,如果您批量删除大部分表格,则可能需要偶尔VACUUM (FULL)
。
性能问题通常与VACUUM
无关(除了顺序扫描在膨胀表上花费的时间更长),因此我不清楚连接。
答案 1 :(得分:0)
您可以通过执行本节中描述的适当设置来控制VACUUM的运行 https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE