活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 终端交易时间(UTC)。 |
| transaction_id | Utf8 | 应用程序为一个逻辑事务生成的标识符。 |
| service | Utf8 | 拥有该交易的应用程序或工作人员。 |
| database_name | Utf8 | 批准的逻辑数据库名称。 |
| status | Utf8 | 已承诺或 rolled_back。 |
| error_type | Utf8 | 受控回滚类别,例如死锁或 serialization_failure。 |
| duration_ms | Float64 | 端到端逻辑事务持续时间。 |
| account_id | Utf8 | 用于影响分析的经批准的客户或租户标识符。 |
| environment | Utf8 | 部署环境。 |
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 的回滚率最高,受影响的帐户数量最多。
checkout-api
25%
comparison 3%
billing-worker
8.33%
comparison 1%
catalog-api
0%
comparison 0%
| service | database_name | transactions | rollbacks | rollback_rate_pct | affected_accounts | average_duration_ms |
|---|---|---|---|---|---|---|
| checkout-api | app_production | 12 | 3 | 25 | 3 | 290 |
| billing-worker | billing_production | 12 | 1 | 8.33 | 1 | 275 |
| catalog-api | catalog_production | 12 | 0 | 0 | 0 | 107.5 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1分子计算最终回滚事务,而不是每次重试尝试。
- 2受影响的账户添加客户背景而不改变交易分母。
- 3应单独检查受控的 error_type,以区分预期的序列化重试和应用程序缺陷。
需要决定的边缘情况
- 一个逻辑操作可能会重试多个事务。如果您还需要最终的用户结果,请保留工作流程 ID。
- 只读事务可能具有不同的基线,并且应在相关时进行分段。
- 不要记录语句参数、连接字符串或不受限制的错误消息。
推荐仪表板
- 酒吧:rollback_rate_pct(按服务)
- 堆叠趋势:随着时间的推移提交和回滚
- 表:按版本和受影响的帐户数回滚 error_type
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。