トランザクション管理と同時実行制御
トランザクション管理は、データベースの更新をまとまりとして扱い、障害や同時実行があっても一貫した結果を保つための仕組みである。ACID特性として原子性、一貫性、独立性、耐久性が定められ、コミット処理の完了時点と、並行処理におけるロック制御が試験で中心的に問われる。同時実行制御は、処理性能を保ちながらこれらの性質を守るための手段である。
ACID特性の四つの性質
ACID特性は、トランザクションが満たすべき四つの性質の総称である。四つは原子性、一貫性、独立性、耐久性であり、可用性はこれに含まれない。 原子性は、トランザクション内の処理が全て実行されるか、失敗時には全てが取り消されるかのどちらかになる性質である。
一貫性は、整合性の取れたデータベースに対してトランザクションを実行した後も、整合性が保たれる性質である。制約違反を残さないことが求められるが、その保証の範囲はデータベースの定義や実装に依存する。 独立性は、同時に実行される他のトランザクションの中間状態に影響されない性質であり、実際の分離の程度は分離レベルなどの設定によって決まる。耐久性は、コミット済みの変更が障害後にも失われない性質である。ただし無条件に保証されるものではなく、システム構成や障害の範囲によって保証の度合いが変わる。
コミット完了の条件と永続性
DBMSがトランザクションのコミット処理を完了とするのは、コミット情報がログファイルに書き込まれ、永続記憶に記録された時点である。 アプリケーションの更新命令が完了しただけでは、障害後にコミットを確実に復旧できるとは限らない。 障害時の回復は、このログの記録を基準にして行われるため、完了の判定もログへの永続化を基準とする。
ログバッファへの書込みだけでは、障害によって内容が失われる可能性があるため、コミット完了とはみなされない。 チェックポイントは障害回復を効率化するための仕組みであり、個々のトランザクションのコミット完了時点を示すものではない。
この節の続き
- ロックの競合と共有・排他
- デッドロックの発生と回避
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む