首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql 9.3 Autovacuum尽管设置激进,但仍未跟上

Postgresql 9.3 Autovacuum尽管设置激进,但仍未跟上
EN

Stack Overflow用户
提问于 2018-05-13 04:05:35
回答 1查看 497关注 0票数 0

试图让Postgresql保持表更干净,然而,即使在调整了资源限制之后,它似乎也很难跟上。

即使在设置了

代码语言:javascript
复制
ALTER TABLE veryactivetable SET (autovacuum_vacuum_threshold = 10000);

veryactivetable的pg_stat_user_tables返回63356 n_dead_tup,last_autoanalyze & last_autovacuum已使用超过24小时

posgresql.conf设置:

代码语言:javascript
复制
shared_buffers = 7680MB
work_mem = 39321kB

maintenance_work_mem = 1920MB

vacuum_cost_delay = 0
vacuum_cost_page_hit = 1000
vacuum_cost_page_miss = 1000
vacuum_cost_page_dirty = 2000
vacuum_cost_limit = 7000


autovacuum = on
log_autovacuum_min_duration = 0
autovacuum_max_workers = 10
autovacuum_naptime = 10s
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.05
autovacuum_analyze_scale_factor = 0.05
autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = 50ms
autovacuum_vacuum_cost_limit = 7000
EN

回答 1

Stack Overflow用户

发布于 2018-05-14 02:48:12

autovacuum_vacuum_scale_factorautovacuum_analyze_scale_factor设置为更高的值,最好是恢复为默认值。没有必要让自动吸尘器频繁运行,特别是在您的情况下。这个想法是让它在启动后快速完成。

autovacuum_naptime设置得更高,更接近原始默认值1分钟。

autovacuum_max_workers恢复为3,除非您有很多数据库或表。

要使自动真空尽可能快地完成(这是目标),您应该做的是将autovacuum_vacuum_cost_delay设置为0。

如果您只有几个非常繁忙的表,最好将其设置在这些表上,就像您在问题中显示的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50310253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档