资讯专栏INFORMATION COLUMN

PostgreSQL顽固的长事务

IT那活儿 / 748人阅读
PostgreSQL顽固的长事务

点击上方“IT那活儿”,关注后了解更多精彩内容!!!

故障发生

Postgresql某系统数据库反馈数据库慢,使用Pgbadger 分析慢日志发现以下SQL执行消耗较高,执行时间平均2S。


分析索引表上列msg_source存在索引,该表可以正常走索引。既然能走索引,PG中考虑就是表死元组过多了。

一、分析表的死元组:
表有273852002 行死元组未清理,分析为表死元组过多影响查询速度。
查看表上last_autovacuum 已做但是没有生效。手动vacuum也没有生效,存在长事务影响vacuum回收。
二、长事务如下:
发现长事务是11月17日连接上来的,距离今天已经三天了,并没有被postgre系统进程杀死。手动将长事务杀死后,再次vacuum表,执行成功。
对比回收前和回收后的执行计划。
优化前3.9S,优化后4ms。
至此优化完成。
问题延伸

但是又产生一个新的疑惑,数据库设置了 idle_in_transaction_session_timeout 参数为20S,为什么没有杀死长事务会话。后面测试了几次idle in transaction会话,都能被系统杀死,这个问题无法复现,成为了悬案,后面遇到再研究。


本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)




END



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129719.html

相关文章

  • 深入解析 PostgreSQL 系列之并发控制与事务机制

    摘要:深入解析系列之并发控制与事务机制并发控制旨在针对数据库中对事务并行的场景,保证中的一致性与隔离。启动并执行第一个命令。事务管理器分配,并返回事务快照,因为正在进行中。意味着该行由另一个并发事务更新,并且其事务尚未终止。 showImg(https://segmentfault.com/img/remote/1460000018081793); 深入解析 PostgreSQL 系列整理...

    JohnLui 评论0 收藏0
  • 深入解析 PostgreSQL 系列之并发控制与事务机制

    摘要:深入解析系列之并发控制与事务机制并发控制旨在针对数据库中对事务并行的场景,保证中的一致性与隔离。启动并执行第一个命令。事务管理器分配,并返回事务快照,因为正在进行中。意味着该行由另一个并发事务更新,并且其事务尚未终止。 showImg(https://segmentfault.com/img/remote/1460000018081793); 深入解析 PostgreSQL 系列整理...

    leone 评论0 收藏0
  • 构建可扩展的PostgreSQL解决方案

    摘要:这可以通过负载平衡来实现数据分片当问题不是并发查询的数量,而是数据库的大小和单个查询的速度时,可以实现不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan | 连接每个程序员的故事 网站 | http://chaindesk.cn...

    jonh_felix 评论0 收藏0
  • 构建可扩展的PostgreSQL解决方案

    摘要:这可以通过负载平衡来实现数据分片当问题不是并发查询的数量,而是数据库的大小和单个查询的速度时,可以实现不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan | 连接每个程序员的故事 网站 | http://chaindesk.cn...

    FrozenMap 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<