这很不爽:PG居然查不了慢SQL锁等待信息
文中参考文档可点击阅读原文打开, 推荐《最好的PostgreSQL学习镜像》。
第49期吐槽:PG 不支持打印慢SQL锁等待信息
1、产品的问题点
PG 不支持打印慢SQL锁等待信息 实际上 log_min_duration, auto_explain, pg_stat_statements都没有统计SQL的锁等待时长.
2、问题点背后涉及的技术原理
log_min_duration, 执行时长超过这个值的SQL会被打印到日志中, 但是日志中并不会记录这条SQL的锁等待耗时.auto_explain插件可以用于打印执行时间超过auto_explain.log_min_duration时长的SQL, 包括其执行计划, NODE的执行时间等. 但是锁等待的耗时算在整个SQL,不会单独统计.log_lock_waits会记录超出锁等待时长超过deadlock_timeout的会话和事务, 但是不打印sql, 而且每隔deadlock_timeout时间打印一条, 很难汇总统计.
3、这个问题将影响哪些行业以及业务场景
通用
4、会导致什么问题?
分析因为锁等待导致的问题非常麻烦, 而且锁等待通常是业务逻辑导致的问题, 这样需要引入开发者一起来进行分析下. 分析问题的门槛高.
5、业务上应该如何避免这个坑
暂无很好的解决方案, 只能经常采集 pg_locks, pg_stat_activity的动态视图信息, 进行等待统计.《PostgreSQL 活跃会话历史记录插件 - pgsentinel 类似performance insight \ Oracle ASH Active Session History》 《PostgreSQL Oracle 兼容性之 - performance insight - AWS performance insight 理念与实现解读 - 珍藏级》 有一些有开发能力的企业则自力更生, 支持了这些能力, 例如海信聚好看的DBdoctor(有个人免费版), d-smart等.
6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
管理复杂度增加
7、数据库未来产品迭代如何修复这个坑
希望内核层面在 log_min_duration和auto_explain记录的SQL中记录锁等待的时长,同时希望 log_lock_waits可以把同一个请求到锁等待日志汇总到一起, 包括SQL信息, 堵塞信息等便于分析.
今日荐书
彩蛋:国产数据库周边生态
当然一款数据库要流行起来, 除了自己要强大, 还离不开生态. 用好周边生态工具, 管理水平战胜90%老司机!!! 下面简单介绍一下国产数据库周边生态.
1、管控软件
鸣嵩(前阿里云数据库总经理 / 研究员)等大佬们创业创办的云猿生, 核心产品是KubeBlocks. 他们的理念是让管理数据库和搭积木一样简单, 如果你要管理很多套并且种类(OLTP\OLAP\NoSQL\KV\TS\MQ等)很多的数据库产品, 推荐首选.
https://github.com/apecloud/kubeblocks
PG中文社区核心委员唐成老师的公司乘数开源的Clup, 专用管理PostgreSQL和PolarDB的集群管理软件, 如果你要管理很多套数据库, 推荐选择. 并且Clup还提供了企业版、自研的连接池、分布式存储、一体机、备份平台等, 是企业用户推荐之选.
https://www.csudata.com/
若航开源的pigsty, 集成了300多个PG插件的PG集群和PolarDB集群管理软件, 如果你要管理很多套PG或PolarDB数据库, 且对插件有特别多的需求, 推荐选择.
https://pigsty.cc/zh/
2、审计监控诊断优化
翟总(曾经是我背后的男人)到海信聚好看后研发的 DBdoctor, 采用ebpf技术, 在对数据库几乎没有影响的情况下实时监控数据库和服务器的各项指标, 发现和诊断问题根因非常方便.
https://www.dbdoctor.cn/
天舟老哥的核心产品Bytebase 是位于您和数据库之间的中间件。它是数据库 DevOps 的 GitLab/GitHub,专为开发人员、DBA 和平台工程师打造。
https://bytebase.cc/docs/introduction/what-is-bytebase/
PawSQL, SQL优化和诊断产品.
D-Smart, Oracle老前辈白老大出品, 专注企业级市场, 将业界顶级DBA经验的产品化作品, 产品功能包括数据库监控、诊断、优化等.
https://www.modb.pro/db/567140
3、国产数据库IDE
IDE是开发者的必备工具,例如社区有pgAdmin, 国产IDE则可以看看老程序猿达刚老师的DeskUI:
https://www.deskui.com
4、数据同步&迁移&备份恢复
NineData, 老领导出去创业做的产品, 产品涵盖了数据同步、迁移、备份、比对、devops、chatDBA等.
https://www.ninedata.cloud/home
DSG, 非常老牌的数据库同步迁移企业级产品, 支持各种数据库的异构和同构迁移, 用他们的话说, 没有dsg搞不定的迁移, 比goldengate还牛.
https://www.dsgdata.com/
公开课
如果你对PolarDB学习感兴趣可以阅读这个公开课系列:
除了PolarDB还非常值得关注的几款PG栈国产数据库:
HaloDB(基于PG兼容PostgreSQL、Oracle、MySQL. http://www.halodbtech.com/ )、 IvorySQL(基于开源PG兼容PG、Oracle. https://www.ivorysql.org/zh-cn/ )、 ProtonBase(云原生分布式数仓. https://protonbase.com/ )、 成都文武数据库(https://ww-it.cn)
参考文档点击阅读原文获得
感谢关注我的github (https://github.com/digoal/blog) 及视频号: