トランザクションのコミット処理完了タイミング【午前2 解説】
要点まとめ
- 結論:トランザクションのコミット完了は「ログファイルへのコミット情報書込み完了時点」が適切です。
- 根拠:ログファイルは永続的な記録媒体であり、障害発生時の復旧に必須な情報を保持します。
- 差がつくポイント:ログバッファは揮発性であり、チェックポイントやアプリケーション完了時点では整合性保証が不十分です。
正解の理由
トランザクションのコミット処理は、データベースの整合性と最新状態の復旧を保証するために、コミット情報が永続的に保存される必要があります。
ログファイルはディスク上の永続記憶であり、障害発生時にログを参照してトランザクションの状態を復旧できます。
したがって、コミット完了のタイミングは「ログファイルへのコミット情報書込み完了時点」が正解です。
よくある誤解
ログバッファへの書込み完了でコミット完了と誤解しがちですが、バッファは揮発性で障害時に消失します。
チェックポイント処理は復旧を効率化しますが、コミット完了の基準にはなりません。
解法ステップ
- トランザクションのコミットとは何かを理解する(整合性と永続性の保証)。
- コミット情報の保存先としてログファイルとログバッファの違いを確認する。
- 障害発生時の復旧に必要な情報が永続的に保存されているかを考える。
- 各選択肢のタイミングがコミット完了の条件を満たすか検討する。
- 永続的なログファイルへの書込み完了時点が最も適切と判断する。
選択肢別の誤答解説
- ア: アプリケーションの更新命令完了時点
→ アプリケーションの処理完了はDBMS内部の永続化とは無関係で、障害時の復旧保証ができません。
- イ: チェックポイント処理完了時点
→ チェックポイントは復旧効率化のための処理であり、コミット完了の基準ではありません。
- ウ: ログバッファへのコミット情報書込み完了時点
→ ログバッファはメモリ上の揮発性領域であり、障害時に情報が失われる可能性があります。
- エ: ログファイルへのコミット情報書込み完了時点
→ 永続的なディスク上のログファイルに書き込まれた時点でコミット完了とし、整合性と復旧を保証します。
補足コラム
トランザクションのACID特性のうち、Durability(永続性)を保証するためにログファイルへの書込みが重要です。
また、WAL(Write-Ahead Logging)方式では、データの更新前に必ずログファイルに書き込むことで障害時の復旧を可能にしています。
FAQ
Q: なぜログバッファへの書込みでは不十分なのですか?
A: ログバッファはメモリ上の一時領域であり、電源断などの障害で内容が消失するため、永続性が保証されません。
Q: チェックポイント処理はコミット完了と関係ありますか?
A: チェックポイントは復旧時の処理負荷軽減を目的とし、コミット完了の基準にはなりません。
関連キーワード: トランザクション、コミット、ログファイル、データベース復旧、ACID特性、Write-Ahead Logging