障害回復とトランザクション管理
要点と定義
トランザクションは、データベースに対する一連の処理単位である。ACID特性は、原子性(全体を実行するか全体を取り消す)、一貫性(処理の前後で整合性を保つ)、独立性(並行実行による干渉を抑える)、耐久性(コミット済みの結果を障害後も保持する)を指す。障害回復では、更新前情報を使って更新を取り消す処理をロールバック、更新後情報を使って更新を再適用する処理をロールフォワードという。チェックポイントは、回復時に確認・処理するログの範囲を絞るための記録点である。
適用条件と例
システム障害後の回復では、チェックポイント以降にコミットしたトランザクションの更新をログで再適用し、障害時に未コミットだったトランザクションの更新を取り消す。未コミットでも書込みがなければ、取り消す更新はない。媒体障害ではバックアップをリストアし、その取得後にコミットした更新をログから再適用する。たとえばチェックポイント後にコミットした更新は再適用し、障害時に未コミットで書込みを行った更新は取り消す。分散トランザクションの二相コミットでは、全参加サイトの準備完了を確認してからコミットを指示する。
媒体障害でデータベースの内容が失われた場合は、バックアップをリストアしてデータを戻し、バックアップ取得後にコミットした更新をログから再適用する。ログによるロールフォワードは、バックアップを復元した後に行う。
二相コミットでは、主サイトが参加サイトへ準備を求め、全サイトから準備完了の応答を得た後にコミットを指示する。準備ができない場合も、その状態を主サイトへ応答する。
ACIDの耐久性は、コミット済みトランザクションの更新結果が障害後も保持される性質である。
チェックポイント以前に完了したトランザクションの更新は、通常のシステム障害回復で再適用する対象から外れる。媒体障害後はバックアップを戻し、ログの更新後情報で必要な更新を再適用する。未完了の更新を取り消すには更新前情報を使う。
チェックポイント後にコミットしたトランザクションの更新は、障害回復時にログからロールフォワードする。チェックポイント前に完了した更新は再適用を要せず、障害時に未コミットの更新はロールフォワードの対象ではない。
ACIDを構成するのは原子性、一貫性、独立性、耐久性である。可用性はACIDの構成要素ではない。
undoには更新前情報が必要であり、redoには更新後情報が必要である。ログに両方を記録しておくことで、更新の取り消しと再適用を行える。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む