応用情報技術者試験過去問を解いてみた R6年度 春期 問27

はじめに

今回も、応用情報技術者試験の過去問を解いていきます。

今回の問題は データベースのトランザクション回復処理に関する問題です。
特に WAL(Write Ahead Logging)と障害回復の仕組みを理解しているかどうかが問われています。

データベースの障害復旧は実務でも非常に重要なテーマなので、試験対策だけでなく実務理解の観点からも押さえておきたいポイントです。


問題

トランザクションTはチェックポイント後にコミットしたが、その後にシステム障害が発生した。
トランザクションTの更新内容をその終了直後の状態にするために用いられる復旧技法はどれか。

ここで、トランザクションは WALプロトコルに従い、チェックポイントの他にトランザクションログを利用する。

選択肢

選択肢内容
2相ロック
シャドウページ
ロールバック
ロールフォワード

解答

エ:ロールフォワード


解説

この問題のポイントは次の3点です。

  • トランザクションは コミット済み
  • チェックポイント後
  • システム障害が発生

つまり

コミット済みトランザクションの更新を 再適用する処理

が必要になります。

その処理が ロールフォワード(roll forward)です。


障害発生時の処理の流れ

システム障害発生までの流れを改めて示すと、下記の通りです。

① チェックポイント

② トランザクション更新

③ COMMIT

④ システム障害

この場合、ディスクへの書き込みがまだ完了していない可能性があります。

そこでログを使って処理を復元します。

ログを確認

コミット済み → ロールフォワード
未コミット → ロールバック

イメージ図

時間軸
------------------------------------------------
チェックポイント → 更新 → COMMIT → 障害発生

この更新を再適用
(ロールフォワード)

つまり

「コミット済みの処理を再実行する」

のがロールフォワードです。


各選択肢の意味

用語内容
2相ロック同時実行制御の仕組み
シャドウページ別ページに更新を書き込む方式
ロールバック未コミット処理を取り消す
ロールフォワードログを使い更新を再実行

問題の用語解説

WAL(Write Ahead Logging)

データベースの更新では

データを書き込む前にログを書き込む

というルールがあります。

① ログに書く
② データを書き込む

これにより、障害が起きてもログから復元できます。


チェックポイント

ログを途中で区切る仕組みです。

これにより

  • 復旧時間を短縮
  • 不要ログを無視できる

というメリットがあります。

ログ
--------------------------------------
古いログ | チェックポイント | 新しいログ

復旧は チェックポイント以降だけ確認します。


ロールバック

未完了トランザクションを取り消します。

更新

障害

COMMITなし

ロールバック

ロールフォワード

コミット済み処理を再適用します。

更新

COMMIT

障害

ロールフォワード

体系的位置づけ

この問題は データベース分野のトランザクション管理に属します。

データベース
├ トランザクション管理
│ ├ ACID特性
│ ├ 同時実行制御
│ │ └ 2相ロック
│ └ 障害回復
│ ├ WAL
│ ├ ロールバック
│ └ ロールフォワード
└ データ管理

応用情報では

  • WAL
  • チェックポイント
  • ロールバック
  • ロールフォワード

は頻出テーマです。


今回の問題の重要ポイント

試験で重要なのは次の判断です。

状況処理
未コミットロールバック
コミット済みロールフォワード

今回の問題は

「コミットした」

と書いてあるので

コミット済み

ロールフォワード

と判断できます。


まとめ

今回の問題のポイントをまとめます。

  • WALは ログ先書き方式
  • チェックポイントで復旧範囲を限定
  • コミット済み → ロールフォワード
  • 未コミット → ロールバック

参考情報

コメント

タイトルとURLをコピーしました