jpm*_*c26 9 postgresql bulk autovacuum
我需要对表中的所有行执行简单的更新。该表有 40-50 百万行。在此期间删除索引和约束会UPDATE
导致巨大的性能改进。
但是自动吸尘器呢?autovacuum 可以启动 aVACUUM
还是ANALYZE
在 a 的中间UPDATE
?如果是这样,那会消耗机器资源的无用工作。我可以先在桌子上禁用它UPDATE
,然后再重新启用它:
ALTER TABLE my_table
SET (autovacuum_enabled = false, toast.autovacuum_enabled = false);
-- Drop constraints, drop indexes, and disable unnecessary triggers
UPDATE my_table SET ....;
-- Restore constraints, indexes, and triggers
ALTER TABLE my_table
SET (autovacuum_enabled = true, toast.autovacuum_enabled = true);
Run Code Online (Sandbox Code Playgroud)
如果我在第一个之后不提交,这甚至有效ALTER
吗?
另外,如果我在禁用它UPDATE
,将它触发后的更新,还是会因为它是他们中禁用它忽略这些更新?(我怀疑它会运行,但我宁愿确定。)
我现在正在使用 PG 9.3,但应该很快就会升级。因此,任何提及新版本更改的内容都值得赞赏。
根本没有意义。autovacuum
不会清除正在运行的事务中锁定的任何行。所以autovacuum
但是,它不会阻止或减慢我所知道的任何有意义的更新。