我有 Postgres 9.4.7,我有一个大表 ~100M 行和 20 列。表查询是每分钟 1.5k 次选择、150 次插入和 300 次更新,但没有删除。这是我的自动真空配置:
autovacuum_analyze_scale_factor 0
autovacuum_analyze_threshold 5000
autovacuum_vacuum_scale_factor 0
autovacuum_vacuum_threshold 5000
autovacuum_max_workers 6
autovacuum_naptime 5s
在我的情况下,数据库几乎总是处于真空状态。当一个吸尘会话结束时,另一个开始。
所以主要问题是:有没有一种常用的方法来清理大桌子?
这里还有一些其他问题。
标准真空不扫描整个表,“分析”只扫描 30k 行。所以在相同的负载下,我应该有一个恒定的执行时间,是真的吗?我真的需要分析表格吗?频繁的“分析”能否对大表的查询计划进行任何有用的更改?