分散トランザクションは、複数のデータベースやサービスにまたがる処理を、1つのトランザクションとして整合性を保ちながら確定させる仕組みです。たとえば「受注登録」と同時に「在庫引当」と「決済確定」を行うような処理で、どれか1つでも失敗したら全体を失敗として扱いたい場面で登場します。単一DBのトランザクションと違い、ネットワーク越しの複数コンポーネントが関与するため、失敗パターンが増える点が特徴でしょう。
代表的な実装方式には2フェーズコミット(2PC)があり、各参加者の準備完了を確認してからコミットすることで原子的な確定を目指します。一方で2PCはロック時間の長期化や調停役の障害による停止リスクがあり、レイテンシと可用性のコストが重くなりがちです。タイムアウト、リトライ、重複実行、部分的な成功が現実として起こるため、単に「ロールバックできる前提」で設計すると運用で詰まります。
実務では、強い整合性が本当に必要な範囲を切り分け、分散トランザクションを避ける設計に寄せることも多いです。代表例がSagaで、各ステップをローカルトランザクションとして確定し、失敗時は補償処理(Compensation)で整合性を取り戻します。どの方式でも冪等性、状態遷移の記録、監査ログ、相関IDによるトレーシング、手動復旧手順まで含めて設計すると、障害時に原因と影響範囲を特定しやすくなります。

