平成22年度 春期 午前Ⅱ 問16
トランザクション処理
コミットに関する問題
システム障害発生時には,データベースの整合性を保ち,かつ,最新のデータベース状態に復旧する必要がある。このために,DBMS がトランザクションのコミット処理完了とみなすタイミングとして,適切なものはどれか。
- アすべての更新データの実更新完了時点
- イチェックポイント処理完了時点
- ウログバッファへの書込み完了時点
- エログファイルへの書出し完了時点
答えと解説を見る
✓ これが正解エログファイルへの書出し完了時点
解説
コミットはログがログファイルに書き出された時点で完了とみなします。
システム障害が起きると、主記憶上のバッファの内容は失われます。コミットを完了とみなした更新は、障害後も必ず復旧できなければなりません。そのためには、更新内容を記録したログが、障害で失われない外部記憶上のログファイルまで書き出されている必要があります。ログファイルにさえ残っていれば、データベース本体への実更新が終わっていなくても、障害後にロールフォワードで最新の状態に戻せます。障害で消えるか残るかを軸に、ログが障害で失われない記憶に届いた時点がコミットの区切り、と覚えると判断できます。
ほかの選択肢はなぜ違うのか
- アすべての更新データの実更新完了時点:データベースへの実更新は、コミットの後に時間をおいて反映してもかまいません。ログファイルに記録が残っていれば障害後に積み直せるので、実更新の完了を待つ必要はなく、待てば応答が遅くなるだけです。
- イチェックポイント処理完了時点:チェックポイントは、バッファ上の更新内容を一定の間隔でデータベースに書き出し、障害時の回復の起点を作る処理です。個々のトランザクションのコミットとは別の周期で行われ、その完了を待つ理由はありません。
- ウログバッファへの書込み完了時点:ログバッファは主記憶上にあるので、システム障害が起きると内容が失われます。ログバッファに書いただけでコミット完了とみなすと、障害後にその更新を復旧できなくなるおそれがあります。
この問題の用語
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
- DBMSデータベースを管理するソフト。複数の処理が同じデータを同時に更新しても矛盾しないよう、排他制御などを行います。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
- ログいつ誰が何をしたかを、機器やソフトウェアが自動で残していく記録です。あとから出来事をたどれるので、事故の調査や不正の発見に使われます。
出典:平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問16
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(DBMS)
- 令和7年度 秋期 午前Ⅱ 問12:ロールフォワードに関する問題(DBMS)
- 令和5年度 秋期 午前Ⅱ 問19:DRDoSに関する問題(ログ)
- 令和2年度 10月 午前Ⅱ 問23:フェールオーバ処理の順序(ログ)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)