応用情報技術者 2016年 秋期 午前2 問30
問題文
DBMS をシステム障害発生後に再立上げするとき、ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして、適切なものはどれか。ここで、トランザクションの中で実行される処理内容は次のとおりとする。


選択肢
ア:(正解)
イ:
ウ:
エ:
DBMSの障害復旧におけるロールフォワードとロールバックの使い分け【午前2 解説】
要点まとめ
- 結論:チェックポイント以降にコミット済みのトランザクションはロールフォワードし、未コミットはロールバックする必要があります。
- 根拠:障害発生時点でコミット済みの変更は反映させ、未コミットの変更は取り消すことでデータの整合性を保ちます。
- 差がつくポイント:チェックポイントの位置とコミット状態を正確に把握し、ロールフォワードとロールバックの対象を誤らないことが重要です。
正解の理由
正解はアです。
チェックポイント以降にコミットされたトランザクションはT2とT5であり、これらはロールフォワードで反映させます。
一方、障害発生時点で未コミットのトランザクションはT6のみで、これをロールバックして変更を取り消す必要があります。
T1はチェックポイント前にコミット済みであり、すでにデータベースに反映されているため、再度ロールフォワードする必要はありません。
T3とT4は未コミットですが、チェックポイントを越えていないため、障害復旧時の処理対象外です。
チェックポイント以降にコミットされたトランザクションはT2とT5であり、これらはロールフォワードで反映させます。
一方、障害発生時点で未コミットのトランザクションはT6のみで、これをロールバックして変更を取り消す必要があります。
T1はチェックポイント前にコミット済みであり、すでにデータベースに反映されているため、再度ロールフォワードする必要はありません。
T3とT4は未コミットですが、チェックポイントを越えていないため、障害復旧時の処理対象外です。
よくある誤解
チェックポイント前のコミット済みトランザクションもロールフォワードが必要と誤解しやすいです。
また、未コミットトランザクション全てをロールバック対象と誤認することもあります。
また、未コミットトランザクション全てをロールバック対象と誤認することもあります。
解法ステップ
- チェックポイントの位置を確認し、どのトランザクションがチェックポイントを越えているかを把握する。
- 各トランザクションのコミット状態を確認し、コミット済みか未コミットかを判別する。
- チェックポイント以降にコミット済みのトランザクションをロールフォワード対象とする。
- 障害発生時点で未コミットのトランザクションをロールバック対象とする。
- チェックポイント前にコミット済みのトランザクションは復旧済みとみなし、処理不要と判断する。
選択肢別の誤答解説
- イ:T3もロールバック対象にしているが、T3はチェックポイントを越えていないため復旧対象外。
- ウ:T1をロールフォワード対象にしているが、チェックポイント前のコミット済みトランザクションは再適用不要。
- エ:T1をロールフォワードし、T3をロールバック対象にしているが、T1は不要でT3は対象外のため誤り。
補足コラム
ロールフォワードはトランザクションログを用いてコミット済みの変更をデータベースに反映させる処理です。
ロールバックは未コミットの変更を取り消し、データの一貫性を保つために行います。
チェックポイントは復旧時の処理範囲を限定し、効率的な障害復旧を可能にします。
ロールバックは未コミットの変更を取り消し、データの一貫性を保つために行います。
チェックポイントは復旧時の処理範囲を限定し、効率的な障害復旧を可能にします。
FAQ
Q: チェックポイント前のコミット済みトランザクションはなぜロールフォワード不要ですか?
A: チェックポイント時点でデータベースに反映済みのため、再適用は不要で復旧済みとみなされます。
A: チェックポイント時点でデータベースに反映済みのため、再適用は不要で復旧済みとみなされます。
Q: 未コミットのトランザクションはなぜロールバックするのですか?
A: 障害発生時点で確定していない変更はデータの整合性を損なうため、取り消す必要があります。
A: 障害発生時点で確定していない変更はデータの整合性を損なうため、取り消す必要があります。
関連キーワード: ロールフォワード、ロールバック、チェックポイント、トランザクション管理、障害復旧、DBMS

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

