DBデータベーススペシャリスト試験 午前Ⅱ

平成23年度特別 データベーススペシャリスト 午前Ⅱ 問13

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

DBMSをシステム障害発生後に再立上げするとき,前進復帰(ロールフォワード)すべきトランザクションと後退復帰(ロールバック)すべきトランザクションの組合せとして,適切なものはどれか。ここで,トランザクションの中で実行される処理内容は図のとおりとする。
T1~T6のRead・Write回数,チェックポイントと障害発生に対する開始・コミット位置のタイムライン,及び前進復帰・後退復帰の組合せ表。
T1~T6のRead・Write回数,チェックポイントと障害発生に対する開始・コミット位置のタイムライン,及び前進復帰・後退復帰の組合せ表。

選択肢

  1. ア
    図ア
  2. イ
    図イ
  3. ウ
    図ウ
  4. エ
    図エ
解き方のヒントを見る

トランザクション境界の見極め

処理のまとまりと整合性を考えるときは、どの操作を同じ単位として扱うか、途中状態が外部から見える可能性、失敗時に守るべき関係を整理し、各選択肢の前提と照らして検討します。

この問題で問われていること

一つの処理単位をどこで区切るかに注目し、開始から完了までに関係する操作、途中で中断された場合の状態、他の処理との関係を順に確認して、整合性の観点で比較します。

視点

トランザクションを学ぶ際は、個々の命令の暗記よりも、複数操作を一つの処理として捉える境界の置き方に注目します。処理の途中状態、失敗や中断、同時に進む別処理との関係を切り分け、整合性を評価するための観点を整理しましょう。

確認ポイント

  • 処理の開始と完了を、どのまとまりとして捉えているか
  • 途中で失敗・中断した場合に、どの状態が問題になるか
  • 同時に進む別の処理との関係を、どの観点で確認するか
正解と解説を見る

正解

ア

解説

障害発生時点でコミット済みでもチェックポイント後の処理は前進復帰の対象となり、未コミットの更新処理は後退復帰の対象となる。読出しだけの未コミット処理は、データベースを変更しないため後退復帰を行う必要がない。したがって、前進復帰はT2とT5、後退復帰はT6となる。

理由

T1はチェックポイントより前にコミット済みなので、障害後に再実行する必要はない。T2とT5はチェックポイント後にコミットされているため、チェックポイント保存時点に含まれない更新を前進復帰で反映する。T6は障害発生時点で未コミットかつ更新処理を含むため、後退復帰で取り消す。

比較

T3とT4は障害発生時点で未コミットだが、処理内容はRead 100だけであり、データベースを書き換えない。そのため、ロールバック対象として扱うべき更新結果が存在しない。以上から、前進復帰T2・T5、後退復帰T6の組合せが適切です。

選択肢ア(正解)

これは正解だよ。T1はチェックポイント前にコミット済みなので復旧処理の対象外となる。T2とT5はチェックポイント後にコミット済みで、保存時点以後の更新を前進復帰する必要がある。T6は未コミットでWriteを含むため後退復帰する。一方、T3とT4はReadだけなので後退復帰の対象にならない。

選択肢イ

これは不正解だよ。前進復帰のT2とT5は、チェックポイント後にコミットされた更新なので適切である。しかし、T3を後退復帰に含める点が誤りである。T3の処理はRead 100だけでデータベースを変更しておらず、取り消すべき更新結果がない。

選択肢ウ

これは不正解だよ。後退復帰をT6だけとする点は、未コミットの更新処理を取り消すという観点では適切である。しかし、T1まで前進復帰に含める点が誤りである。T1はチェックポイントより前にコミット済みなので、再立上げ時に前進復帰する必要はない。

選択肢エ

これは不正解だよ。T2とT5を前進復帰する判断は正しいが、前進復帰にT1を加えている点と、後退復帰にT3を加えている点が誤りである。T1はチェックポイント前に完了済みで、T3はReadだけなので、どちらも提示された復旧対象にはならない。

学習のポイント

チェックポイント、コミット状態、更新処理の有無を組み合わせた障害復旧の判定

出典:独立行政法人 情報処理推進機構(IPA)平成23年度特別 データベーススペシャリスト試験 午前Ⅱ 問13(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針