平成22年春期試験問題 午前Ⅱ 問16

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

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

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

この問題の出題歴


Pagetop