情報処理安全確保支援士試験 2018年 春期 午前2 問21
DBMS がトランザクションのコミット処理を完了とするタイミングはどれか。
ア:アプリケーションの更新命令完了時点
イ:チェックポイント処理完了時点
ウ:ログバッファへのコミット情報書込み完了時点
エ:ログファイルへのコミット情報書込み完了時点(正解)
解説
DBMSがトランザクションのコミット処理を完了とするタイミングはどれか【午前2 解説】
要点まとめ
- 結論:DBMSはトランザクションのコミット完了をログファイルへのコミット情報書込み完了時点で判断します。
- 根拠:トランザクションの耐障害性を保証するため、永続的なログファイルへの書込みが必須です。
- 差がつくポイント:ログバッファではなく、ディスク上のログファイルへの書込み完了がコミット完了の基準である点を理解しましょう。
正解の理由
トランザクションのコミット処理は、データの一貫性と耐障害性を保証するために、ログファイル(ディスク上)へのコミット情報の書込みが完了した時点で完了とみなされます。ログバッファは一時的なメモリ領域であり、ここへの書込みだけでは障害発生時に情報が失われる可能性があるため、コミット完了の基準にはなりません。チェックポイント処理やアプリケーションの更新命令完了はコミット完了のタイミングとは異なります。
よくある誤解
ログバッファへの書込み完了をコミット完了と誤解しやすいですが、これは一時的なメモリ上の処理であり、永続化されていません。
チェックポイント処理はコミットとは別の耐障害性向上の仕組みです。
チェックポイント処理はコミットとは別の耐障害性向上の仕組みです。
解法ステップ
- トランザクションのコミットとは何かを理解する(データの永続化と一貫性の確保)。
- コミット完了の条件として、ログ情報が永続的に保存される必要があることを確認する。
- ログバッファはメモリ上の一時領域であり、障害時に消失する可能性があることを認識する。
- チェックポイント処理はコミットとは異なる耐障害性向上のための処理であることを区別する。
- 以上から、ログファイルへのコミット情報書込み完了時点がコミット完了のタイミングであると判断する。
選択肢別の誤答解説ステップ
- ア: アプリケーションの更新命令完了時点
→ アプリケーションの処理完了はDBMS内部のコミット完了とは無関係です。 - イ: チェックポイント処理完了時点
→ チェックポイントは障害復旧を効率化するための処理であり、コミット完了のタイミングではありません。 - ウ: ログバッファへのコミット情報書込み完了時点
→ ログバッファはメモリ上の一時領域であり、永続化されていないためコミット完了とは言えません。 - エ: ログファイルへのコミット情報書込み完了時点
→ 正解。ログファイルへの書込み完了でトランザクションのコミットが確定します。
補足コラム
トランザクションの耐障害性を保証するために、DBMSは「Write-Ahead Logging(WAL)」という方式を採用しています。これは、データの変更内容を実際にデータファイルに反映する前に、必ずログファイルに書き込むことで障害発生時の復旧を可能にする仕組みです。コミット完了はこのログファイルへの書込み完了をもって確定し、これによりACID特性のDurability(永続性)が保証されます。
FAQ
Q: なぜログバッファへの書込みだけではコミット完了とならないのですか?
A: ログバッファは揮発性のメモリ領域であり、障害発生時に内容が失われる可能性があるため、永続化されたログファイルへの書込み完了が必要です。
A: ログバッファは揮発性のメモリ領域であり、障害発生時に内容が失われる可能性があるため、永続化されたログファイルへの書込み完了が必要です。
Q: チェックポイント処理はコミットとどう違いますか?
A: チェックポイントは障害復旧を効率化するためにデータファイルとログの同期を行う処理であり、トランザクションのコミット完了とは別の概念です。
A: チェックポイントは障害復旧を効率化するためにデータファイルとログの同期を行う処理であり、トランザクションのコミット完了とは別の概念です。
関連キーワード: トランザクション, コミット, ログファイル, Write-Ahead Logging, 耐障害性, ACID, DBMS