我有一个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行。因此,在相同的负载下,我应该具有恒定的执行时间,这是真的吗? 我真的需要分析表吗?对于大表,频繁的“分析”是否可以对查询计划产生任何有用的改变?
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行。因此,在相同的负载下,我应该具有恒定的执行时间,这是真的吗? 我真的需要分析表吗?对于大表,频繁的“分析”是否可以对查询计划产生任何有用的改变?