問題
DBMSをシステム障害発生後に再立上げするとき、ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして、適切なものはどれか。ここで、トランザクションの中で実行される処理内容は次のとおりとする。
トランザクション | データベースに対するRead回数とWrite回数 |
T1, T2 | Read 10, Write 20 |
T3, T4 | Read 100 |
T5, T6 | Read 20, Write 10 |
ロールフォワード | ロールバック | |
ア | T2, T5 | T6 |
イ | T2, T5 | T3, T6 |
ウ | T1, T2, T5 | T6 |
エ | T1, T2, T5 | T3, T6 |
解説
チェックポイント
チェックポイントとは、データベースの状態を定期的に保存することです。チェックポイントでは、データベースの更新内容をログファイルに記録します。
チェックポイントを行うことで、システム障害が発生した場合に、障害発生直前の状態にデータベースを復旧することができます。
ロールフォワード
ロールフォワードとは、チェックポイント以降にコミットされたトランザクションの処理を再実行することです。
ロールフォワードを行うことで、システム障害が発生した場合に、チェックポイント以降に行われたデータの変更を反映することができます。
ロールバック
ロールバックとは、トランザクションの処理を元に戻すことです。
ロールバックを行うことで、システム障害が発生した場合に、障害発生前に行われていたトランザクションの処理を元に戻すことができます。
ロールフォワードとロールバックの違い
ロールフォワードとロールバックは、どちらもシステム障害が発生した場合にデータベースを復旧するために使用されます。
ロールフォワードは、チェックポイント以降にコミットされたトランザクションの処理を再実行することで、チェックポイント以降に行われたデータの変更を反映します。
一方、ロールバックは、トランザクションの処理を元に戻すことで、障害発生前に行われていたトランザクションの処理を元に戻します。
ロールフォワードとロールバックの処理順序
システム障害が発生した場合、ロールフォワードとロールバックの処理は、以下の順序で行われます。
- チェックポイント以降にコミットされたトランザクションをロールバックする。
- チェックポイント時点のデータベースを復旧する。
- チェックポイント以降にコミットされたトランザクションをロールフォワードする。
これにより、障害発生直前の状態にデータベースを復旧することができます。
と言うわけで、問題を解いてみましょう。
T3, T4はReadのみのため、ロールフォワードもロールバックも必要ありません。T3がロールバックに入っている「イ」「エ」は選択肢から外れます。
T1はチェックポイント以前にコミットしているので、ロールフォワードも不要です。「ウ」は選択肢から外れますので、正解は「ア」です。