この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

DBMSのトランザクション管理でコミット処理の完了タイミングが重要なのはACID特性の「D(Durability:耐久性)」を保証するため。耐久性とは「コミットが完了したトランザクションの変更はシステム障害が発生しても失われない」という保証。WAL(Write-Ahead Logging:先行ログ書き込み)方式では、データファイルへの書き込みより先にログファイル(トランザクションログ)への書き込みを完了することを原則とする。コミット処理が完了するタイミングは「ログファイルへのコミット情報の書き込みが完了した時点」。この時点でシステムがクラッシュしても、ログファイルからREDO(再実行)によって変更を復元できる。ログバッファ(メモリ上)への書き込みは物理的な障害(電源断等)で失われる可能性があるため、コミット完了と見なすには不十分。データファイルへの書き込み完了を待つと性能が大きく低下するため、WALではログファイル書き込みをコミット完了の基準とする。

なぜ他の選択肢は違うのか

選択肢 ア
アプリケーションプログラムによるデータ更新命令完了時点はトランザクション内の「DML命令実行」に相当するが、まだトランザクションはコミットされておらず、ロールバックが可能な状態。コミット命令を受け取るまで変更は確定しない。この時点でのシステム障害は未コミットの変更をロールバックする必要がある状態であり、耐久性が保証されていない。
選択肢 イ
チェックポイント(Checkpoint)はDBMSがダーティページ(更新済みだがまだディスクに書かれていないバッファ上のページ)を定期的にディスクにフラッシュ(永続化)し、ログの適用開始点を記録する処理。チェックポイントは複数トランザクションにまたがるバッファ管理の仕組みであり、個別のトランザクションのコミット完了タイミングとは別概念。
選択肢 ウ
ログバッファはメモリ(RAM)上のログの一時保存領域。OSのバッファキャッシュとも連動しており、物理的な電源障害・サーバクラッシュ等でメモリ内容が失われる。ログバッファへの書き込み完了はディスクへの永続化が保証されていないため、この時点をコミット完了と見なすと耐久性が保証されない。コミット完了にはディスク(ログファイル)への書き込みfync/fdatasyncが必要。

解くときのポイント

WALの原則「ログ先行書き込み」: データファイルへの書き込みより前にログファイルへ書き込むことで障害耐性を確保する。ログバッファ(メモリ)とログファイル(ディスク)の違いが重要。