[转帖]关于PostgreSQL里面的autovacuum服务的性能问题

Posted jinanxiaolaohu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转帖]关于PostgreSQL里面的autovacuum服务的性能问题相关的知识,希望对你有一定的参考价值。

最近线上Postgresql数据库中其中几台服务器更新时变得非常慢,经过排查和对比,发现时因为autovacuum未启动导致的。

http://www.voidcn.com/article/p-heemtnov-bgy.html

 

 

1、使用表pg_stat_all_tables查看autovacuum执行记录

 

select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables;

技术图片

如上图,发现所有的对象对应的analyze及vacuum执行记录均为空。

 

2、使用ps -ef | grep postgres发现postgres对应的analyze及vacuum进程均未启动

 

3、查看postgres.conf文件及show all查看autovacuum选项设置正常

autovacuum = on

 

4、查看文档autovacuum启动的三个条件如下:

a)       设置 autovacuum = on

b)       设置 track_counts = on

c)       设置 /etc/hosts #能 ping通 localhost(该条件之前不满足)

原来是这个原因导致的,最开始的时候因为项目特殊原因/etc/hosts文件中未设置localhost。

后来添加localhosts以后未重启Postgresql,导致track_counts在没有设置localhosts的情况下默认为off状态,而analyze及vacuum也无法启动,从而数据库对应表的统计信息及vacuum均未能成功执行。

 

5、找到原因以后,安排维护时间重启数据库以后,数据库恢复正常

技术图片

可以看到进程autovacuum launcher process及stats collector process均启动成功

以上是关于[转帖]关于PostgreSQL里面的autovacuum服务的性能问题的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]PostgreSQL 参数调整(性能优化)

[转帖]超详细的PostgreSQL体系结构总结,值得收藏

[转帖]PostgreSQL的时间/日期函数使用

[转帖]postgresql查看用户连接以及杀死连接的会话

转帖史上最全PostgreSQL体系结构

[转帖] “王者对战”之 MySQL 8 vs PostgreSQL 10