IPA過去問ドリル

平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14

テクノロジ/データベース

DBMSをシステム障害発生後に再立上げするとき,ロールフォワードすべきトランザクションとロールバックすべきトランザクションの組合せとして,適切なものはどれか。ここで,トランザクションの中で実行される処理内容は次のとおりとする。 トランザクション T1,T2:データベースに対するRead 10回,Write 20回 トランザクション T3,T4:データベースに対するRead 100回(Writeなし) トランザクション T5,T6:データベースに対するRead 20回,Write 10回 各トランザクションのチェックポイント及び障害発生時点における実行状況(コミット済みか否か)は,次の図のとおりである。 (注:本サイトでは原問題の表を文字表記に変換していますが,図は原問題のとおり掲載しています)

平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14の図

出典:平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問14

正解:ア

解説

チェックポイント以降にコミットしたトランザクション(図中で●の位置がチェックポイントより後にあるもの)は,コミット済みであるにもかかわらず更新後の内容がディスクへ確実に反映されているとは限らないため,ログの更新後情報を使ってロールフォワード(redo)する必要がある。図より,これに該当するのはT2とT5である。T1はチェックポイントが完了する前にコミットしており,その更新内容はチェックポイント処理の時点で既にディスクに反映済みとみなせるため,改めてロールフォワードする必要はない。一方,障害発生時点でまだコミットしていないトランザクションのうち,データベースへの書込み(Write)を行っているものは,ディスクに書き込まれた可能性のある未コミットの更新を取り消すためにロールバック(undo)が必要になる。T3とT4はいずれもRead 100回だけでWriteを一切行っていないため,コミットの有無にかかわらず取り消すべき更新データは存在せず,復旧処理は不要である。これに対しT6はWrite 10回を行っており,かつ障害発生時点で未コミットであるため,ロールバックが必要になる。したがって,ロールフォワード対象はT2,T5,ロールバック対象はT6となる。

選択肢ごとの解説

  • 正しい。コミット済みでチェックポイント後に完了したT2,T5はロールフォワードが必要であり,Write処理を行いながら未コミットのまま障害を迎えたT6はロールバックが必要である。Readのみで更新を行っていないT3,T4は,コミットの有無にかかわらず復旧処理が不要である。
  • 誤り。T3はデータベースに対してReadだけを行いWriteを一度も行っていないトランザクションであり,コミットしていなくてもディスク上に取り消すべき更新データは存在しないため,ロールバックの対象にする必要はない。
  • 誤り。T1はチェックポイントが完了する前にコミットしており,その更新内容はチェックポイント処理によって既にディスクに反映されているとみなせるため,改めてロールフォワードする必要はない。
  • 誤り。ウと同様にT1をロールフォワードの対象に含めている点,及びイと同様にReadのみでWriteを行っていないT3をロールバックの対象に含めている点の両方が誤りである。
データベーススペシャリストの過去問を演習モードで解く