トランザクション処理 (全50問中33問目)

No.33

チェックポイントを取得するDBMSにおいて,図のような経過時間でシステム障害が発生し,前進復帰によって障害回復を行った。前進復帰後のa,bの値は幾つか。ここで,Tnは長方形の左右両端がそれぞれトランザクションの開始と終了を表し,終了時にCOMMITを行う。また,長方形内の記述は処理内容を表す。T1開始前のa,bの初期値は0とする。
67.gif/image-size:394×185
  • [この問題の出題歴]
  • ソフトウェア開発技術者 H17秋期 問69

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

DBMSは、ディスクに対する入出力効率を向上させるために、トランザクションの更新をメモリ上のバッファとログファイルに記憶しておき、一定の間隔ごとにまとめてディスクに反映させるという方式をとっています。このディスクと同期を取るタイミングとチェックポイントといいます。
トランザクションがコミットされたとき、ログファイルは同時に書き出されますがディスクへの反映はチェックポイントを待つということになります。

システム障害が発生すると、チェックポイント以降にコミットされたトランザクションがディスクに反映されていないため、更新後ログを使用して障害発生直前の状態まで前進復帰(ロールフォワード)を行います。また障害発生時にコミットされていないトランザクションは、ACID特性の原子性も基づき更新前ログを使用した後進復帰(ロールバック)でトランザクション開始時点の状態に戻します。

図の時間経過に沿った処理の流れは次のようになります。
  1. T1の開始
  2. T1をコミット:a=a+1 //a=1
  3. T2の開始
  4. T1の結果をディスクに書き出す(チェックポイント)
  5. T2をコミット:b=b+2 //b=2
  6. T3の開始
  7. T3をコミット:a=a+3 //a=4
  8. T4の開始
  9. --システム障害の発生--
  10. チェックポイントに戻る //a=1,b=0
  11. 更新後ログを使ってT2をディスクに反映 //b=2
  12. 更新後ログを使ってT3をディスクに反映 //a=4
  13. T4はコミットされていなかったので開始前の状態そのままにしておく
したがってa=4,b=2が正解になります。
© 2010-2019 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop