Postgresql 9.3 Autovacuum尽管设置非常严格,但仍无法跟上
试图让Postgresql保持表更干净,但即使在调整了资源限制之后,它似乎也根本无法保持 即使在凝固之后Postgresql 9.3 Autovacuum尽管设置非常严格,但仍无法跟上,postgresql,postgresql-9.3,vacuum,autovacuum,Postgresql,Postgresql 9.3,Vacuum,Autovacuum,试图让Postgresql保持表更干净,但即使在调整了资源限制之后,它似乎也根本无法保持 即使在凝固之后 ALTER TABLE veryactivetable SET (autovacuum_vacuum_threshold = 10000); 可激活的pg_stat_user_表返回63356 n_dead_tup,最后一次自动分析和最后一次自动真空超过24小时 posgresql.conf设置: shared_buffers = 7680MB work_mem = 39321kB ma
ALTER TABLE veryactivetable SET (autovacuum_vacuum_threshold = 10000);
可激活的pg_stat_user_表返回63356 n_dead_tup,最后一次自动分析和最后一次自动真空超过24小时
posgresql.conf设置:
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
将
autovacuum\u vacuum\u scale\u factor
和autovacuum\u analyze\u scale\u factor
设置为更高的值,可能最好返回默认值。无需让autovacuum运行得过于频繁,尤其是在您的情况下。这样做的目的是让它一开始就快速完成
将autovacuum\u naptime
设置得更高,更接近原始默认值一分钟
将autovacuum\u max\u workers
还原为3,除非您有大量数据库或表
要使autovacuum尽可能快地完成(这是目标),您应该将autovacuum\u vacuum\u cost\u delay
设置为0
如果您只有几个非常繁忙的表格,最好将其设置在您在问题中所展示的表格上