トランザクション
ACID特性
トランザクションが満たすべき性質
- 原子性(Atomicity)
- 一貫性(Consistency)
- データの整合性が常に保たれており,トランザクション前後で結果に矛盾が生じない.
- 独立性(Isolation)
- 同時に実行している他のトランザクションの影響を受けない.分離性とも.
- 耐久性(Durability)
- トランザクション処理結果は障害が発生しても失われない.永続性とも.
2相コミットメント制御
- 調停者が参加者にCOMMIT可否を問い合わせ,応答を受け取る.
- COMMIT実行を要求する.
- 前項で異常が発生した場合はロールバックを要求
- 以下の場合は,参加者に指示が届かずコミットかロールバックかすらわからない状態(=ブロック状態)に陥る.
- コミット指示の直前に調停者に障害が発生
- 送信時に通信障害が発生
トランザクション異常
※DB実践入門pp332~
- ダーティリード
- まだコミットしていないデータを読み取ってしまう.
- Aが読み取った後にBがロールバックしてしまうとAに整合性がなくなる.
- まだコミットしていないデータを読み取ってしまう.
- インコンシステントリード
- ノンリピータブルリード
- 1つのトランザクション内で複数回読み取ると値が変わってしまう.
- ロストアップデート
- ファントムリード
- 過去になかったデータが出現する.
- 別のトランザクションがINSERTした影響を受けるため.
- 過去になかったデータが出現する.
分離レベル
レベル | D | I/N | L/F |
---|---|---|---|
READ-UNCOMMITTED | ○ | ○ | ○ |
READ-COMMITTED | × | ○ | ○ |
REPEATABLE-READ | × | × | ○ |
SERIALIZABLE | × | × | × |
デスぺpp174~179
- ロック制御
- 共有ロック:他から占有ロックのみかけられない.(参照)
- 占有ロック:他から共有/占有ロックをかけられない.(更新)
- READ-UNCOMMITTED
- 共有:しない.
- 占有:すぐ解放される.
- READ-COMMITTED
- REPEATABLE-READ
- ロックはすべてトランザクション終了まで保持.
- SERIALIZABLE
- 直列化されたスケジュールと常に同じ結果.
- 探索範囲のインデックス(なければテーブル)にロックをかける
<略字> - D:ダーティリード - I:インコンシステントリード - N:ノンリピータブルリード - L:ロストアップデート - F:ファントムリード
参考サイト
出題実績
- H23 問14
- H23 問15
- H29 問17