ホーム > 情報処理安全確保支援士試験 > 2018年 春期
情報処理安全確保支援士試験 2018年 春期 午前2 問21
DBMS がトランザクションのコミット処理を完了とするタイミングはどれか。
ア:アプリケーションの更新命令完了時点
イ:チェックポイント処理完了時点
ウ:ログバッファへのコミット情報書込み完了時点
エ:ログファイルへのコミット情報書込み完了時点(正解)
解説
DBMS(データベース管理システム)におけるトランザクションのコミット処理は、データの整合性を保ちつつ確実に処理を完了させるための重要な仕組みです。問題は「コミット処理が完了したとみなすタイミング」がいつかを問うています。その理解を深めるために、以下で解説します。
トランザクションのコミットとは
トランザクションは「一連の処理をひとまとめにして、全部成功するか全部失敗するかを保証する」単位です。コミットとは、そのトランザクションで行った変更内容を確定し、永続化する操作を指します。
- コミットが完了したとは、トランザクションの更新内容がデータベースに確実に反映された状態
- そうでなければ、障害時に途中の状態でデータが壊れたり、一部だけ反映される不整合が起きたりします
選択肢の比較
-
ア: アプリケーションの更新命令完了時点
これはアプリケーションがSQL文や更新命令を発行して処理が終わった段階ですが、これは「命令の送信が完了」しただけで、DBMS内部での永続化はまだ保証されていません。 -
イ: チェックポイント処理完了時点
チェックポイント処理は、データベースの全体状態を安定化させる際に行われる処理で、コミット単位ではありません。トランザクションごとの完了タイミングとは異なります。 -
ウ: ログバッファへのコミット情報書込み完了時点
ログバッファはメモリ上の領域で、一時的にデータを書き込む場所です。ここに書くだけでは電源断などの障害で消える可能性があるため、永続性は保証されません。 -
エ: ログファイルへのコミット情報書込み完了時点
ログファイルはディスク上の永続的な記録媒体です。ここにコミットに関するログが確実に書き込まれることで、障害が起きてもログを使って復旧が可能になります。
よって、コミット完了は「ログファイルへの書込み完了時」と定義されます。
なぜログファイルへの書込み完了時がコミット完了か
DBMSは耐障害性を確保するために、変更内容を直接データファイルに書き込む前に、ログファイル(トランザクションログ)にまず書き込みます。この仕組みは「Write-Ahead Logging(WAL)」と呼ばれます。
- コミット情報がログファイルに書き込まれた時点で、そのトランザクションの変更内容は「永続的に保存された」とみなせます
- そのため、たとえ直後にシステム障害が発生しても、ログから処理内容を復旧できます
- 逆に、ログに書き込まれていない変更は無効として扱われるため、途中で失敗したトランザクションの影響を受けません
まとめ
- トランザクションのコミット完了は、変更内容が永続的に記録されている状態であることが条件です
- 「ログファイルへのコミット情報書込み完了時点」が最も重要な完了基準であり、問題の正解は「エ」です
この仕組みを理解すると、トランザクション処理の信頼性を支える技術の重要性がよくわかるため、DBMSの動作原理や復旧メカニズムについても深く理解を進めることができます。