【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信息, 堵塞信息等便于分析.
相关文章
|
1月前
|
SQL 数据库
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
33 2
|
3月前
|
XML SQL 数据格式
XML动态sql查询当前时间之前的信息报错
XML动态sql查询当前时间之前的信息报错
54 2
|
8天前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
1月前
|
SQL 数据库
LangChain-08 Query SQL DB 通过GPT自动查询SQL
LangChain-08 Query SQL DB 通过GPT自动查询SQL
17 3
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
34 1
|
3月前
|
SQL 流计算
Flink SQL 在快手实践问题之由于meta信息变化导致的state向前兼容问题如何解决
Flink SQL 在快手实践问题之由于meta信息变化导致的state向前兼容问题如何解决
49 1
|
3月前
|
SQL JSON Go
Go - 基于 GORM 获取当前请求所执行的 SQL 信息
Go - 基于 GORM 获取当前请求所执行的 SQL 信息
62 3
|
3月前
|
SQL 存储 JSON
【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB
【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB
|
4月前
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用合集之怎么使用SQL查询来获取ODPS中所有的表及字段信息
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
131 7
|
4月前
|
SQL 缓存 关系型数据库
面试题MySQL问题之实现覆盖索引如何解决
面试题MySQL问题之实现覆盖索引如何解决
57 1