コンテンツへスキップ
uencoder

Transaction

トランザクションは、ACID 特性を満たす単一の論理単位として実行される操作のグループである。すべて実行されるか、まったく実行されないかのどちらかである。

目的

複数の操作をアトミックな単位にまとめ、障害時や並行実行時の正しさを保証する。

メカニズム

BEGIN で開始し、操作を実行し、COMMIT で確定または ROLLBACK で中断する。原子性はアンドゥログ、永続性はリドゥログ/WAL、独立性はロックまたは MVCC で保証される。分散トランザクションは 2PC/3PC や Saga パターンを使う。

ユースケース

  • バンキングシステムの送金
  • 注文と在庫の引き当てを行う
  • リレーショナルの複数テーブル更新
  • 分散サービス間の連携操作

例

  • 入力
    BEGIN; A→B 100; COMMIT
    Output
    Atomic transfer

    All or nothing

よくあるエラー

No explicit transaction causes partial commits
Wrap related operations in a transaction

関連用語

References