平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16
テクノロジ/データベースシステム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要がある。このために,DBMSがトランザクションのコミット処理完了とみなすタイミングとして,適切なものはどれか。
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16
- アすべての更新データの実更新完了時点
- イチェックポイント処理完了時点
- ウログバッファへの書込み完了時点
- エログファイルへの書出し完了時点
正解:エ
解説
障害が発生してもデータベースを最新の整合性のとれた状態に復旧できるようにするため,DBMSは,更新内容をログファイルに書き出す処理(ログの先行書込み,WAL)が完了した時点をもって,トランザクションのコミット処理完了とみなします。実データへの反映(実更新)がまだ完了していなくても,ログさえ書き出されていれば,障害発生後にREDOによって最新の状態に復旧できるためです。
選択肢ごとの解説
- ア誤り。すべての更新データの実更新(データベースファイルへの反映)を待ってからコミット完了とすると,コミットの応答が遅くなり,性能上も好ましくありません。
- イ誤り。チェックポイント処理の完了は,ログ量削減や障害回復時間の短縮のための仕組みであり,個々のトランザクションのコミット完了のタイミングとは異なります。
- ウ誤り。ログバッファへの書込みだけでは,障害(電源断など)によってバッファの内容が失われる可能性があり,コミット完了とはみなせません。
- エ正しい。ログファイル(不揮発性の記憶媒体)への書出しが完了した時点で,障害が発生してもREDOによって更新内容を復元できるため,DBMSはこの時点をコミット処理完了とみなします。