Autovacuum原理和实验
什么是 autovacuum?
- Autovacuum是启动PostgreSQL时自动启动的后台实用程序进程之一,每隔一分钟执行一次
- 在生产系统中不应该将其设置为关闭
- autovacuum = on # ( ON by default )
- track_counts = on # ( ON by default )
为什么需要 autovacuum?
postgres中还有一个名为Stats Collector的后台进程,用于跟踪使用情况和活动信息。autovacuum launcher使用此过程收集的信息来确定autovacuum的候选表列表。PostgreSQL标识需要vacuum或自动分析的表,但仅在启用autovacuum时。这可以确保postgres自我修复并阻止数据库发生更多的膨胀/碎片。
- 需要vacuum来移除死元组
- 防止死元组膨胀
- 更新表的统计信息进行分析,以便提供优化器使用
- autovacuum launcher使用Stats Collector的后台进程收集的信息来确定autovacuum的候选表列表
记录autovacuum
log_autovacuum_min_duration
- -1 :表示不记录
- 0 :表示记录所有的
- ‘250ms’ # Or 1s, 1min, 1h, 1d :表示记录真空操作时间大于此值的操作
<