Postgres 跑久了,表越来越大、查询越来越慢,往往是 autovacuum 没跟上,dead tuples 堆积。
排查:
VACUUM (VERBOSE) mytable;看 dead tuple 比例。pg_stat_user_tables看 last_vacuum / last_autovacuum。
调优:
- 写密集表调低
autovacuum_vacuum_scale_factor(比如 0.05),更激进。 - 大表调高
autovacuum_work_mem,避免多次扫。 - 必要时手动
VACUUM ANALYZE。
避免在业务高峰手动 VACUUM FULL(锁表)。
大家 VACUUM 都怎么调?