跳至主要內容
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 金鑰