活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| 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
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。