ITサービスマネージャ 2016年 午前2 問21
問題文
システム障害発生時には、データベースの整合性を保ち、かつ、最新のデータベース状態に復帰する必要がある。このために、DBMSがトランザクションのコミット処理を完了とするタイミングとして、適切なものはどれか。
選択肢
ア:アプリケーションの更新命令完了時点
イ:チェックポイント処理完了時点
ウ:ログバッファへのコミット情報書込み完了時点
エ:ログファイルへのコミット情報書込み完了時点(正解)
🔒 解説は解答すると表示されます
トランザクションのコミット完了条件【午前2解説】
正解の理由
DBMSは、コミット情報をログファイルに書き込み、障害発生後にもその情報を利用できる状態にした時点で、コミット処理を完了とします。したがって、正しいのはエです。
更新データそのものがデータベースのデータファイルに書き込まれる前に障害が起きても、ログファイルにコミット情報が残っていれば、復旧処理でそのトランザクションの更新を再実行できます。これにより、コミット済みの最新状態へ復帰できます。
解法ステップ
- 問題が問うているのは、アプリケーションの更新処理が終わる時点ではなく、DBMSがコミットを完了とみなす時点です。
- 障害後にもコミット済みの情報を使えるようにする必要があります。
- ログバッファ上の情報だけでは、障害によって失われる可能性があります。
- ログファイルにコミット情報を書き込んで記録を確保する選択肢を選びます。
選択肢別の誤答解説
- ア:アプリケーションの更新命令が完了しても、コミット情報が永続的に記録されたとは限りません。更新処理の完了とトランザクションのコミット完了は別です。
- イ:チェックポイントは、障害回復に必要な情報や書込み状況を整理する処理です。個々のトランザクションのコミット完了時点ではありません。
- ウ:ログバッファへの書込みだけでは、情報がメモリ上にある可能性があります。障害時に失われるおそれがあるため、コミット完了の条件としては不十分です。
- エ:ログファイルにコミット情報を書き込むことで、障害後の復旧に必要な記録を残せます。コミット済みの最新状態を復元できるため、適切です。
よくある誤解
-
データファイルへの書込み完了がコミット完了だと思う
データページの書込みは、コミット時点で必ず完了しているとは限りません。ログを使って後から復旧できます。 -
ログバッファへの書込みで十分だと思う
バッファは通常、主記憶上にあるため、障害時に内容が失われる可能性があります。ログファイルへの書込みが重要です。 -
チェックポイントとコミットを同じ処理だと思う
チェックポイントは復旧を効率化するための処理であり、トランザクションごとのコミット完了を示すものではありません。
補足コラム
この考え方は、ログを利用した障害回復の基本です。コミット済みの更新がデータファイルに反映される前に障害が発生した場合は、ログを基に更新を再実行する「ロールフォワード」が行われます。一方、コミット前の更新が反映されてしまっている場合は、取り消しの処理である「ロールバック」が必要になることがあります。
FAQ
Q. コミット情報がログファイルに書き込まれた後なら、データファイルへの書込み前に障害が起きても大丈夫ですか。
A. はい。ログに基づいて復旧処理を行い、コミット済みの更新を反映できます。
A. はい。ログに基づいて復旧処理を行い、コミット済みの更新を反映できます。
Q. チェックポイントが完了していれば、その後のコミットも完了したことになりますか。
A. いいえ。チェックポイントと各トランザクションのコミットは別の処理です。コミット済みかどうかは、コミット情報がログに記録されているかで判断します。
A. いいえ。チェックポイントと各トランザクションのコミットは別の処理です。コミット済みかどうかは、コミット情報がログに記録されているかで判断します。
関連キーワード: トランザクション、コミット、ログファイル、ログバッファ、チェックポイント、ロールフォワード、障害回復

\ せっかくなら /
ITサービスマネージャを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

