跳转到内容
Telemetry
数据库可靠性 SQL查询示例

通过指纹查找缓慢的数据库查询

按慢查询率、平均持续时间和最差观察持续时间对规范化数据库操作进行排名,无需存储原始 SQL 或参数。

入门database_query_events已审核 2026-07-28测试用 阿帕奇 DataFusion 45.2.0

审阅者 Telemetry产品团队 . SQL 兼容性、事件契约、合成输出和操作注意事项. 审查标准和所有权

问题已回答

哪些数据库操作始终慢到足以进行调查?

原始 SQL 通常包含标识符、值和无限的变体。受控查询指纹将等效操作保持在一起,因此较慢的查询速率可以识别重复的应用程序路径,而无需将遥测数据转换为查询文本存档。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp数据库操作完成时(UTC)。
query_fingerprintUtf8没有参数值的标准化、有界操作标签。
serviceUtf8发出操作的应用程序或工作人员。
database_nameUtf8批准的逻辑数据库名称。
statusUtf8成功或失败。
duration_msFloat64端到端数据库操作持续时间(以毫秒为单位)。
rows_returnedInt64当客户端公开计数时返回或受影响的行。
releaseUtf8发出查询的应用程序版本。
environmentUtf8部署环境。
DataFusion SQL

复制查询

sql
SELECT
  query_fingerprint,
  service,
  database_name,
  COUNT(*) AS executions,
  SUM(CASE WHEN duration_ms >= 1000 THEN 1 ELSE 0 END) AS slow_executions,
  100.0 * SUM(CASE WHEN duration_ms >= 1000 THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS slow_query_rate_pct,
  AVG(duration_ms) AS average_duration_ms,
  MAX(duration_ms) AS maximum_duration_ms
FROM database_query_events
WHERE timestamp_utc >= now() - INTERVAL '30 days'
  AND environment = 'production'
GROUP BY query_fingerprint, service, database_name
HAVING COUNT(*) >= 10
ORDER BY slow_query_rate_pct DESC, executions DESC
LIMIT 20;

此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。

查询结果

指纹慢查询率

大多数执行中发票更新都很慢,而目录查询仍低于说明性的一秒阈值。

query_fingerprintservicedatabase_nameexecutionsslow_executionsslow_query_rate_pctaverage_duration_msmaximum_duration_ms
UPDATE invoices SET status = ?billing-workerapp_production108801,2501,700
SELECT checkout WITH line_itemscheckout-apiapp_production126501,012.51,600
SELECT products BY categorycatalog-apicatalog_production1200330440

综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。

Slow-query rate by fingerprint:来自 Find Slow Database Queries by Fingerprint 示例结果的合成 slow_query_rate_pct 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

JSON 包包含类型化事件契约, reproducible 输入行、确切的 SQL、预期输出、审阅注释和引擎版本。 CSV 包含显示的结果。

SQL 是如何工作的

  1. 1指纹是应用程序控制的标签,而不是原始 SQL。这限制了基数并避免捕获参数值。
  2. 2速率可区分偶尔缓慢的高容量操作和大多数时间缓慢的操作。
  3. 3最小执行计数可以防止单个冷查询主导排名。

需要决定的边缘情况

  • 每个工作负载选择一个慢速阈值;一秒是说明性的,对于交互式请求来说可能太长了。
  • 客户端持续时间包括池等待和网络时间,除非这些阶段是单独记录的。
  • 不要记录原始查询参数、连接字符串或不受限制的 SQL 文本。

推荐仪表板

  • 酒吧:slow_query_rate_pct by query_fingerprint
  • 趋势:average_duration_ms(按版本)
  • 表:所选指纹和服务的最新故障

警报指导

当大容量指纹仍然高于其审查的多个完整存储桶的慢查询率时发出警报。

读取警报设置

让查询示例发挥作用

相关埋点和指南

定义源数据

此分析的事件模式

继续分析

在真实事件中运行它

创建表,调整字段并保存结果

免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。

获取 API 密钥