平成28年秋期試験午前問題 午前Ⅱ 問21

午前Ⅱ 問21解説へ
システム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要がある。このために,DBMSがトランザクションのコミット処理完了とみなすタイミングとして,適切なものはどれか。

  • アプリケーションの更新命令完了時点
  • チェックポイント処理完了時点
  • ログバッファへのコミット情報書込み完了時点
  • ログファイルへのコミット情報書込み完了時点
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
トランザクションが正常終了したときはCOMMITコマンドによってトランザクションを確定させますが、COMMITを発行したからといって即座に補助記憶に更新内容が反映されるわけではありません。これはデータベースの更新が主記憶を介して①~⑤の手順で行われるからです。
  1. トランザクション開始
  2. データベースから主記憶にデータを読み込む
  3. 主記憶上のデータを更新する
  4. コミット~トランザクション終了
  5. 書出しのタイミング(チェックポイント)ごとに、それまでに主記憶上で更新されたデータをまとめて補助記憶に書き込む
補助記憶への書出しは効率化のために一定時間ごとにまとめて行われるため、COMMIT文を実行したからといってその内容が補助記憶に書き出されている保証はありません。主記憶は揮発メモリなので、もしコミット文実行と補助記憶への書出しの間に障害が発生した場合は、トランザクションの情報が失われてしまうことになります。これではトランザクションの永続性(耐久性)を満たすことはできません。

このような理由からトランザクションは、コミット文が実行された時点ではなくWALプロトコルに従って更新後ログが物理的記憶装置に書き込まれた瞬間にコミットしたとみなします。一旦ログが安定記憶上(二重化されたディスクなど)に書き込まれたならば、たとえコミット文に実行以後に障害が発生しても、そのトランザクションを再現することが可能になるためです。

したがって正解は「エ」です。
WALプロトコル
トランザクションがログを安定記憶に書き出すタイミングについての取り決めで、"Write Ahead Log"(まずログを書け)という意味のとおり、実際の操作に先行してログの書き出すことを求めるもの

この問題の出題歴


Pagetop