本文へ移動
Telemetry
データベースの信頼性 SQL レシピ

データベーストランザクションのロールバック率の計算

エラー カテゴリ、期間、影響を受けるアカウントを維持しながら、コミットされたトランザクションとロールバックされたトランザクションをサービスごとに比較します。

中級者database_transaction_eventsレビュー済み 2026-07-28テスト済み アパッチ DataFusion 45.2.0

レビュー者 Telemetry 製品チーム . SQL の互換性、イベント コントラクト、合成出力、および操作上の注意事項. 基準と所有権を確認する

質問に回答しました

異常な割合のデータベース トランザクションをロールバックするサービスはどれですか?

ロールバックは、予期された同時実行応答である場合もあれば、ユーザーに見える障害である場合もあります。サービスおよびデータベースごとにそのレートを測定することで、アプリケーションのトランザクション ポリシーをより詳細に検討する必要がある箇所が特定されます。

イベント契約

クエリが期待するフィールド

フィールド種類なぜ存在するのか
timestamp_utcTimestampUTC での端末トランザクション時間。
transaction_idUtf8アプリケーションによって生成される 1 つの論理トランザクションの識別子。
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 は、予想されるシリアル化の再試行とアプリケーションの欠陥を区別するために、個別に検査する必要があります。

決定すべきエッジケース

  • 1 つの論理操作で複数のトランザクションが再試行される場合があります。最終的なユーザー結果も必要な場合は、ワークフロー ID を保持してください。
  • 読み取り専用トランザクションには異なるベースラインがある可能性があるため、関連する場合はセグメント化する必要があります。
  • ステートメントのパラメーター、接続文字列、または無制限のエラー メッセージをログに記録しません。

推奨されるダッシュボード

  • バー: rollback_rate_pct (サービス別)
  • 積み上げ傾向: 時間の経過に伴うコミットとロールバック
  • 表: リリース別のロールバック error_type と影響を受けるアカウント数

アラートガイダンス

意味のあるトランザクション量による持続的なロールバック率の増加についてアラートを発行し、再試行可能な同時実行エラーを最終的なエラーから分離します。

アラート設定を読む

レシピを活用する

関連する機器とガイド

分析を続ける

実際のイベントで実行する

テーブルを作成し、フィールドを調整して、結果を保存します

無料で始めて、構造化されたイベントを送信し、クエリ結果をグラフ、共有ダッシュボード ウィジェット、またはアラート入力として使用します。

API キーを取得する