PostgreSQL 最大的问题就是vacuum,只要PG的实现多版本和UNDO的方式不改变,那么这个话题就会一直继续,到永远。
前面四期讲了autovacuum 的触发条件,源代码,怎么调整参数,优化,今天最后一章,的说说怎么进行监控,并且评定你的autovacuum 的工作是合格的。下面的内容主要是基于几点来围绕的
监控表的dead tumple ,下面的语句可以展示每个表中的dead_tuple的数量,以及占整体表中的行的百分比,以及最近一次表进行autovacuum的时间。通过下图可以看到有些表并没有进行 autovacuum 的操作,哪怕是一次,但已经有88万行的dead tuple ,定期通过语句和匹配的条件可以对一些表长期没有autovacuum 进行关注,或者在自定义的监控系统中增加 dead tuple 预警,达到一定的阀值就需要进行 warning 了。
SELECT schemaname,
relname,
n_live_tup,
n_dead_tup,
n_dead_tup::float/(n_dead_tup::float +n_live_tup::float +100)*100 as percent_of_dead_tuples,
last_autovacuum
FROM pg_stat_user_tables;

本文详细解读PostgreSQL中autovacuum的监控策略,包括dead_tuple分析、表大小监控、进程状态跟踪,以及如何确保autovacuum效率。通过实例和实用查询展示如何评估autovacuum的工作效果并设置预警。
最低0.47元/天 解锁文章
109

被折叠的 条评论
为什么被折叠?



