【DB吐槽大会】第49期 - PG 不支持打印慢SQL锁等待信息

简介: 大家好,这里是DB吐槽大会,第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的动态视图信息, 进行等待统计.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 管理复杂度增加

7、数据库未来产品迭代如何修复这个坑

  • 希望内核层面在log_min_durationauto_explain 记录的SQL中记录锁等待的时长,
  • 同时希望 log_lock_waits 可以把同一个请求到锁等待日志汇总到一起, 包括SQL信息, 堵塞信息等便于分析.
相关文章
|
2月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
559 0
|
2月前
|
SQL 存储 安全
第七章 SQL错误信息 - SQL错误代码 -400 到 -500
第七章 SQL错误信息 - SQL错误代码 -400 到 -500
37 1
|
2月前
|
SQL 存储 Java
第三章 SQL错误信息
第三章 SQL错误信息
26 1
|
2月前
|
SQL 数据库连接 索引
第四章 SQL错误信息 - SQL错误代码 -1 到 -99
第四章 SQL错误信息 - SQL错误代码 -1 到 -99
32 0
|
21天前
|
SQL 缓存 关系型数据库
✅分析SQL执行计划,我们需要关注哪些重要信息
SQL执行计划解析:12个关键字段详解,包括id(操作标识)、select_type(操作类型)、table(涉及表)、partitions(分区)、type(索引类型)、possible_keys(可能的索引)、key(使用索引)、key_len(索引长度)、ref(比较对象)、rows(扫描行数)、filtered(过滤比例)和Extra(额外信息)。类型从优至劣:system>const>eq_ref>ref>range>index>ALL。
|
7天前
|
SQL 存储 关系型数据库
Mysql-事务-锁-索引-sql优化-隔离级别
Mysql-事务-锁-索引-sql优化-隔离级别
|
2月前
|
缓存 算法 关系型数据库
SQL DB - 关系型数据库是如何工作的
• 绿:O(1)或者叫常数阶复杂度,保持为常数(要不人家就不会叫常数阶复杂度了)。 • 红:O(log(n))对数阶复杂度,即使在十亿级数据量时也很低。 • 粉:最糟糕的复杂度是 O(n^2),平方阶复杂度,运算数快速膨胀。 • 黑和蓝:另外两种复杂度(的运算数也是)快速增长。 如果要处理2000条元素: • O(1) 算法会消耗 1 次运算 • O(log(n)) 算法会消耗 7 次运算 • O(n) 算法会消耗 2000 次运算
|
2月前
|
SQL 存储 数据库
第六章 SQL错误信息 - SQL错误代码 -200 到 -399
第六章 SQL错误信息 - SQL错误代码 -200 到 -399
14 1
|
2月前
|
SQL JSON Java
第五章 SQL错误信息 - SQL错误代码 -100 到 -199
第五章 SQL错误信息 - SQL错误代码 -100 到 -199
32 0
|
2月前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之DataWorks中,填写ODPS SQL任务中的参数和分区信息如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
45 0