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

计算数据库事务回滚率

按服务比较已提交和回滚的事务,同时保留错误类别、持续时间和受影响的帐户。

中级database_transaction_events已审核 2026-07-28测试用 阿帕奇 DataFusion 45.2.0

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

问题已回答

哪些服务回滚了异常份额的数据库事务?

回滚可以是预期的并发响应或用户可见的故障。通过服务和数据库衡量其速率可以确定应用程序事务策略值得仔细审查的地方。

活动合约

查询期望的字段

字段类型为什么存在
timestamp_utcTimestamp终端交易时间(UTC)。
transaction_idUtf8应用程序为一个逻辑事务生成的标识符。
serviceUtf8拥有该交易的应用程序或工作人员。
database_nameUtf8批准的逻辑数据库名称。
statusUtf8已承诺或 rolled_back。
error_typeUtf8受控回滚类别,例如死锁或 serialization_failure。
duration_msFloat64端到端逻辑事务持续时间。
account_idUtf8用于影响分析的经批准的客户或租户标识符。
environmentUtf8部署环境。
DataFusion SQL

复制查询

sql
SELECT
  service,
  database_name,
  COUNT(*) AS transactions,
  SUM(CASE WHEN status = 'rolled_back' THEN 1 ELSE 0 END) AS rollbacks,
  100.0 * SUM(CASE WHEN status = 'rolled_back' THEN 1 ELSE 0 END)
    / NULLIF(COUNT(*), 0) AS rollback_rate_pct,
  COUNT(DISTINCT CASE
    WHEN status = 'rolled_back' THEN account_id
    ELSE NULL
  END) AS affected_accounts,
  AVG(duration_ms) AS average_duration_ms
FROM database_transaction_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
  AND environment = 'production'
GROUP BY service, database_name
HAVING COUNT(*) >= 10
ORDER BY rollback_rate_pct DESC, transactions DESC;

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

查询结果

按服务划分的事务回滚率

Checkout 的回滚率最高,受影响的帐户数量最多。

servicedatabase_nametransactionsrollbacksrollback_rate_pctaffected_accountsaverage_duration_ms
checkout-apiapp_production123253290
billing-workerbilling_production1218.331275
catalog-apicatalog_production12000107.5

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

Transaction rollback rate by service:来自 Calculate Database Transaction Rollback Rate 示例结果的合成 rollback_rate_pct 值的静态图表
确定性示例输出的可索引 SVG。下载它以获取带有归属的文章、操作手册或设计评论。

重现示例

下载公共装置

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

SQL 是如何工作的

  1. 1分子计算最终回滚事务,而不是每次重试尝试。
  2. 2受影响的账户添加客户背景而不改变交易分母。
  3. 3应单独检查受控的 error_type,以区分预期的序列化重试和应用程序缺陷。

需要决定的边缘情况

  • 一个逻辑操作可能会重试多个事务。如果您还需要最终的用户结果,请保留工作流程 ID。
  • 只读事务可能具有不同的基线,并且应在相关时进行分段。
  • 不要记录语句参数、连接字符串或不受限制的错误消息。

推荐仪表板

  • 酒吧:rollback_rate_pct(按服务)
  • 堆叠趋势:随着时间的推移提交和回滚
  • 表:按版本和受影响的帐户数回滚 error_type

警报指导

对有意义的事务量持续回滚率增加发出警报,然后将可重试的并发错误与最终失败分开。

读取警报设置

让查询示例发挥作用

相关埋点和指南

继续分析

在真实事件中运行它

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

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

获取 API 密钥