データベーススペシャリスト 2011年 午前2 問13
問題文
DBMS をシステム障害発生後に再立上げするとき、前進復帰(ロールフォワード)すべきトランザクションと後退復帰 (ロールバック) すべきトランザクションの組合せとして、適切なものはどれか。ここで、トランザクションの中で実行される処理内容は次のとおりとする。


選択肢
ア:(正解)
イ:
ウ:
エ:
DBMSの障害復旧における前進復帰と後退復帰の組合せ【午前2 解説】
要点まとめ
- 結論:コミット済みトランザクションは前進復帰、未コミットトランザクションは後退復帰が基本です。
- 根拠:障害発生時点でコミット済みの変更は反映し、未コミットの変更は取り消す必要があるためです。
- 差がつくポイント:チェックポイント通過後のコミット状態を正確に把握し、復旧処理を適切に分類できるかが重要です。
正解の理由
障害発生時点でコミット済みのトランザクション(T2、T5)は、データベースに反映されていない可能性があるため、ログを用いて変更を適用する「前進復帰(ロールフォワード)」が必要です。一方、未コミットのトランザクション(T6)は途中で終了しているため、その変更を取り消す「後退復帰(ロールバック)」を行います。T1はチェックポイント到達前にコミット済みですが、チェックポイント以降のログがないため、前進復帰の対象外です。よって、正しい組合せは「前進復帰:T2, T5」「後退復帰:T6」である選択肢アが正解です。
よくある誤解
コミット済みトランザクションはすべて前進復帰すべきと誤解しがちですが、チェックポイント以前にコミット済みでログが不要な場合もあります。未コミットトランザクションの扱いを混同しないことが重要です。
解法ステップ
- チェックポイントの位置を確認し、どのトランザクションがチェックポイントを通過しているかを把握する。
- 各トランザクションのコミット状態を確認し、コミット済みか未コミットかを判別する。
- コミット済みでチェックポイント以降のログが必要なトランザクションは前進復帰対象とする。
- 未コミットのトランザクションは後退復帰対象とする。
- 以上の条件に合致する組合せを選択肢から選ぶ。
選択肢別の誤答解説
- ア(正解):T2、T5はコミット済みで前進復帰、T6は未コミットで後退復帰。正しい。
- イ:T3も後退復帰に含めているが、T3はチェックポイント通過後未コミットであり後退復帰対象だが、問題文の図示からT3の扱いが不明瞭で誤り。
- ウ:T1を前進復帰に含めているが、T1はチェックポイント到達直前にコミット済みでログが不要なため誤り。
- エ:T1を前進復帰に含め、T3を後退復帰に含めているが、T1の扱いが誤り。
補足コラム
前進復帰(ロールフォワード)は、障害発生後にログを用いてコミット済みの変更をデータベースに反映させる処理です。後退復帰(ロールバック)は、未コミットの変更を取り消し、データベースの整合性を保つために行います。チェックポイントは復旧処理の起点となり、ログの適用範囲を限定する役割を持ちます。
FAQ
Q: チェックポイント以前にコミット済みのトランザクションは復旧でどう扱うのですか?
A: チェックポイント以前にコミット済みのトランザクションは、すでにデータベースに反映されているため、復旧時にログを適用する必要はありません。
A: チェックポイント以前にコミット済みのトランザクションは、すでにデータベースに反映されているため、復旧時にログを適用する必要はありません。
Q: 未コミットトランザクションの変更はなぜ取り消すのですか?
A: 未コミットの変更は一貫性が保証されていないため、障害復旧時に取り消してデータベースの整合性を保ちます。
A: 未コミットの変更は一貫性が保証されていないため、障害復旧時に取り消してデータベースの整合性を保ちます。
関連キーワード: ロールフォワード、ロールバック、チェックポイント、トランザクション管理、障害復旧、DBMS

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

