执行JDBC事务时Postgresq真空是否执行?

时间:2018-05-04 05:07:31

标签: postgresql

来自PostgreSQL博客

  

VACUUM回收死元组占用的存储空间。在正常的PostgreSQL操作中,更新删除或废弃的元组不会从其表中物理删除;它们一直存在,直到VACUUM完成。因此,有必要定期执行VACUUM,尤其是在频繁更新的表上。

所以,我在使用jdbc的java应用程序中遇到了性能优化问题。所以我的问题是VACUUM是在JDBC事务中的某个地方执行还是需要显式设置?

2 个答案:

答案 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