Transaction
トランザクションは、ACID 特性を満たす単一の論理単位として実行される操作のグループである。すべて実行されるか、まったく実行されないかのどちらかである。
目的
複数の操作をアトミックな単位にまとめ、障害時や並行実行時の正しさを保証する。
メカニズム
BEGIN で開始し、操作を実行し、COMMIT で確定または ROLLBACK で中断する。原子性はアンドゥログ、永続性はリドゥログ/WAL、独立性はロックまたは MVCC で保証される。分散トランザクションは 2PC/3PC や Saga パターンを使う。
ユースケース
- バンキングシステムの送金
- 注文と在庫の引き当てを行う
- リレーショナルの複数テーブル更新
- 分散サービス間の連携操作
例
- 入力
BEGIN; A→B 100; COMMITOutputAtomic transferAll or nothing
よくあるエラー
- No explicit transaction causes partial commits
- Wrap related operations in a transaction