ロールバックとロールフォワードの違いと覚え方
システム障害の発生後、システムを復帰したときにデータベースをロールバックとロールフォーワードを組み合わせて、データベースを障害発生直前の状態に回復する処理が行われます。
いずれもデータベースを障害発生直前の状態に更新ログを用いて回復させる処理ですが、ロールバックとロールフォーワードの違いや覚え方の視点から知識を整理してみます。
ロールバック:障害発生時にコミットされていないトランザクションは、更新前ログを使って、トランザクション開始時の状態に戻す。下の図ではT3やT6をロールバックにて戻してあげる必要があります。
覚え方としてはバック(Back=戻る) というのがポイントで、更新前に戻す必要があるため更新前ログを使用すると整理すればしっくりきます。
ロールバックは更新前にて処理を戻る
なお、トランザクションの書込み処理が実施されていない場合はロールバック対象外のため留意が必要です。
ロールフォワード:障害発生前にコミットしたトランザクションは、更新後ログを使って、コミットの内容を反映させる※障害前の状態に戻す必要があるため、T2やT5で更新した内容を更新後ログにて反映させる必要があります。
一方でチェックポイントの以前にコミットされたT1については、反映済みのため対象外となります。
覚え方としてはフォワード(forward=先へ) というのがポイントで、更新後(=先)に進める必要があるため更新後ログを使用すると整理できます。
ロールフォワードは更新後にて処理の先へ
コメントを残す