障害対策に必要な処理
障害の種類によって、回復処理は変わってきます。
1.トランザクションの途中で障害が発生した場合 → それまで行った更新処理をすべて取り消す
2.コミット済みトランザクションが行った更新が何らかの障害で記憶装置に反映されていない場合 → 確実に記憶装置に反映させる
1.の場合はロールバック処理
2.の場合はロールフォワード処理
によって障害回復を行います。
ログファイル
ロールバックやロールフォワード処理を行うためには、トランザクションによる更新履歴を逐一記録したログ(ジャーナルまたは履歴)ファイルが必要になります。
ログファイルには、トランザクションがデータベースを更新するごとに更新前と更新後の値を記録します。
チェックポイント
チェックポイントとは、データベースへの変更がストレージ上のファイルに書き込まれる処理が行われた時点を指します。
データベースの内容はまずメインメモリ(RAM)上で変更され、その後、変更内容が一定量溜まると、まとめてストレージに反映されます。
(SQL命令が実行されたときに、DBに反映されるわけではない!)
これにより、障害発生時のデータ復旧を効率的に行うことができます。
ロールバック
ロールバックは、更新前情報(更新前ログファイル)を用いて、未コミットのトランザクションが行った更新を取り消す処理です。
主に、実行中のトランザクションが、何らかの理由でコミット前に異常終了したときに行われます。
ロールフォワード
ロールフォワードは、更新後情報(更新後ログファイル)を用いて、コミット済みのトランザクションの更新を記憶装置(HDDやSSD)に反映させる処理です。
主に、ハードウェア(記憶装置)に何らかの障害時に行われます。
システム障害時の回復
