平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
テクノロジ/データベースシステム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要がある。このために,DBMSがトランザクションのコミット処理完了とみなすタイミングとして,適切なものはどれか。
出典:平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
- アアプリケーションの更新命令完了時点
- イチェックポイント処理完了時点
- ウログバッファへのコミット情報書込み完了時点
- エログファイルへのコミット情報書込み完了時点
正解:エ
解説
DBMSは,障害発生時にもデータベースの整合性を保ち,かつ最新の状態に復旧できるようにするため,トランザクションのコミット処理は,そのコミット情報(ログレコード)が不揮発性の記憶媒体であるログファイルへ書き込まれた(フラッシュされた)時点をもって完了したとみなす。これは,先行書き込み(write-ahead logging)の原則に基づくものであり,ログバッファに書き込んだだけでは,電源断などによりその内容が失われる可能性があるため,コミット完了とはみなされない。
選択肢ごとの解説
- ア誤り。アプリケーションが更新命令を発行した時点では,まだその内容がログとして永続化されていないため,障害時に失われる可能性があり,コミット完了とはみなせない。
- イ誤り。チェックポイント処理は,一定時点までの更新内容をデータベースに反映し,障害回復に要する時間を短縮するための定期的な処理であり,個々のトランザクションのコミット完了のタイミングとは異なる。
- ウ誤り。ログバッファはメモリ上の一時的な領域であり,そこに書き込んだだけでは電源断などの障害によって内容が失われる可能性があるため,コミット完了とはみなせない。
- エ正しい。コミット情報が不揮発性のログファイルへの書込みまで完了した時点で,初めてそのコミットが障害によっても失われないことが保証されるため,DBMSはこの時点をコミット処理完了とみなす。