共同事件契约
使这些查询可重用的字段
- timestamp_utc、服务、database_name、环境和发布
- query_fingerprint、transaction_id、pool_name、consumer_name 和 migration_id
- duration_ms、wait_ms、lag_seconds、状态、error_type 和容量字段
SQL 之前的定义
查询无法为您做出的决定
- 1在收集之前规范化查询操作,而不是存储原始 SQL 和参数。
- 2单独的客户端池等待、数据库执行、锁定等待和下游复制延迟。
- 3将数据库症状与应用程序服务、发布和用户可见的工作流程联系起来。
推荐顺序
先建立检测,然后诊断
分析模式
让结果解释决定
检测客户端边界
记录安全操作指纹、服务、最终状态以及应用程序接收数据库结果的阶段持续时间。
将压力与影响配对
当调用者等待、超时、回滚或用户可见工作流失败时,满池或临时锁变得可操作。
保留推出上下文
保留发布、迁移、副本和区域字段,以便可以将回归隔离到引入它的部署边界。
完整的查询示例
复制查询,然后验证假设
通过指纹查找缓慢的数据库查询
按慢查询率、平均持续时间和最差观察持续时间对规范化数据库操作进行排名,无需存储原始 SQL 或参数。
哪些数据库操作始终慢到足以进行调查?
查看 SQL 和结果测量数据库连接池饱和度
按应用程序服务测量平均池利用率、排队获取等待、超时和空闲容量。
哪些应用程序池使调用者等待数据库连接?
查看 SQL 和结果计算数据库事务回滚率
按服务比较已提交和回滚的事务,同时保留错误类别、持续时间和受影响的帐户。
哪些服务回滚了异常份额的数据库事务?
查看 SQL 和结果查找数据库锁等待和死锁
按事件计数、等待持续时间、未解决的锁定和检测到的死锁对阻塞的数据库操作指纹进行排名。
哪些数据库操作会造成最严重的锁争用?
查看 SQL 和结果测量数据库复制和 CDC 延迟
通过平均延迟、最差延迟、落后字节数和过时采样率来比较副本和更改数据捕获消费者。
哪些副本或 CDC 使用者落后于源数据库?
查看 SQL 和结果按版本跟踪数据库迁移失败
在完成部署之前,按应用程序版本比较数据库迁移的成功、失败、回滚和持续时间。
哪些版本包含失败或回滚的数据库迁移?
查看 SQL 和结果检测 N+1 数据库查询模式
检测在一个应用程序请求内多次重复的数据库指纹。
哪些路由和查询组合在请求中重复可疑?
查看 SQL 和结果按总时间影响对数据库查询进行排名
结合调用量和延迟来查找消耗最多应用程序时间的数据库指纹。
哪个数据库操作消耗的累积请求时间最多?
查看 SQL 和结果测量长时间运行的数据库事务
查找具有长尾、回滚和开放持续时间过长的应用程序事务类。
哪些应用程序事务类别保持开放时间最长?
查看 SQL 和结果通过 SQLSTATE 和版本分析数据库错误
按可移植 SQLSTATE 类、应用程序操作和发布对数据库故障进行分组。
应用程序发布后哪些数据库错误类别增加了?
查看 SQL 和结果测量数据库连接超时和改动
按服务和区域比较连接打开、关闭、获取超时以及受影响的请求。
哪些服务和区域显示出不健康的数据库连接流失?
查看 SQL 和结果按区域测量数据库副本的陈旧程度
按区域比较应用程序观察到的副本重播延迟、陈旧读取和故障转移结果。
哪些副本区域正在提供过时或失败的读取?
查看 SQL 和结果