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


選択肢
ア:(正解)
イ:
ウ:
エ:
🔒 解説は解答すると表示されます
チェックポイントとトランザクション復旧【午前2解説】
正解の理由
図から、トランザクションのコミット時点とチェックポイントの前後関係を確認すると、T1 はコミット済みのマーク(●)がチェックポイントより前にあるため、チェックポイント時点でその更新内容は永続化済みと扱えます。したがって再立ち上げ時にロールフォワード(再適用)する必要はありません。一方、T2 と T5 はコミットマークがチェックポイント後にあるため、チェックポイント以降にコミットされた更新はディスクに反映されていない可能性があるためロールフォワードが必要です。T6 はコミットマークがなく未コミットなので、その部分は不完全な更新でありロールバック(取り消し)すべきです。よって、ロールフォワード:T2, T5、ロールバック:T6 を示す ア が正しい選択です。
解法ステップ
- 図で各トランザクションのコミット(●)とチェックポイント位置を確認する。
- チェックポイント以前にコミット済みのトランザクション(例:T1)は、チェックポイントで永続化済みとみなす(通常は再適用不要)。
- チェックポイント以降にコミットしたトランザクション(例:T2, T5)は、そのコミットの適用が未完了の可能性があるためロールフォワード(redo)する。
- 障害時に未コミットのトランザクション(例:T6)は、部分適用された更新を取り消すためロールバック(undo)する。
- 読み取りのみ(書き込みなし)のトランザクション(T3, T4)はデータベース状態を変えていないため、通常はロールバック/ロールフォワードの対象外であることを確認する。
選択肢別の誤答解説
-
ア(正しい)
ロールフォワード:T2, T5 / ロールバック:T6。上記の理由により正しい組合せです。ア が正解。 -
イ(誤り)
ロールフォワード:T2, T5(これは正しい)だが、ロールバックに T3 を含めている。T3 は図では書き込みがなく読み取りのみの処理であるため、ロールバックする必要はありません。読み取りのみなら障害復旧で取り消す操作は不要です。 -
ウ(誤り)
ロールフォワードに T1 を含めているが、T1 はコミット済みでかつコミット時点がチェックポイント以前であるため、通常は再適用の対象になりません。したがって T1 をロールフォワードするのは誤りです。ロールバック列の T6 は正しいが、前段が間違っています。 -
エ(誤り)
ウと同様に T1 をロールフォワードに含め、かつロールバックに不要な T3 を含めているため両面で誤りです。
よくある誤解
- チェックポイント直前/直後の判定を誤る:チェックポイント以前にコミット済みであれば通常は再適用不要である点を見落としがちです。T1 のように「コミット済みだがチェックポイント前」のケースを誤って再適用対象とするミスが多いです。
- 読み取りのみトランザクションをロールバック対象と考える誤り:読み取りのみはデータベースを変更しないため、復旧で取り消す操作は不要です(ログにも書き込みがない)。
- チェックポイントの意味を「単に開始時点」とだけ捉える誤解:チェックポイントは復旧時の基準点であり、チェックポイント以前にコミットした更新は基本的にディスクに反映済みとして扱うという性質を理解する必要があります。
補足コラム
現実のDBMSには ARIES のようにより詳細なログ管理方式が使われることが多く、チェックポイントの実装や redo/undo の範囲はアルゴリズムにより細かい違いがあります。一般的な試験問題での想定は次の通りです:チェックポイント時点で確定(コミット)している更新は永続化済みと扱い、チェックポイント以降にコミットしたトランザクションは再適用、未コミットトランザクションはロールバックという単純化されたモデルです。試験では図からコミット/未コミットとチェックポイントの前後関係を読み取ることが鍵になります。
FAQ
Q. チェックポイント以前にコミットしたがディスクに書き込まれていない書き込みがある場合は?
A. 一般的な復旧モデルではチェックポイント処理で必要なページ(ダーティページ)をディスクに書き出すため、チェックポイント以前にコミットされた更新は永続化済みとみなします。実装により微細な差はありますが、試験では「チェックポイント以前のコミットは redo 不要」とすることが標準想定です。
A. 一般的な復旧モデルではチェックポイント処理で必要なページ(ダーティページ)をディスクに書き出すため、チェックポイント以前にコミットされた更新は永続化済みとみなします。実装により微細な差はありますが、試験では「チェックポイント以前のコミットは redo 不要」とすることが標準想定です。
Q. 読み取りのみトランザクションがチェックポイント前に開始されておりコミットもしていない場合は?
A. 読み取りのみで書き込みが存在しなければ、復旧で状態を戻す必要はありません。ログにも書き込みが残らないため、ロールバックの対象外です。
A. 読み取りのみで書き込みが存在しなければ、復旧で状態を戻す必要はありません。ログにも書き込みが残らないため、ロールバックの対象外です。
Q. ロールフォワードとロールバックはどの順番で行う?
A. 通常はログの分析段階で、まずどのトランザクションが redo 対象か undo 対象かを決定し、redo を先に実行して最新のコミット状態まで持って行き、その後未コミットのトランザクションを undo して整合性を回復します。
A. 通常はログの分析段階で、まずどのトランザクションが redo 対象か undo 対象かを決定し、redo を先に実行して最新のコミット状態まで持って行き、その後未コミットのトランザクションを undo して整合性を回復します。
関連キーワード: トランザクション、チェックポイント、ロールフォワード、ロールバック、コミット、読み取り専用、ログ復旧、redo、undo

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

