トランザクションの問題|応用情報技術者令和3年秋期 午前問27トランザクションの問題

今回はデータベースのトランザクションの問題を解いてみます。実際に障害を経験していないとイメージがつきずらいので実際どういう状況なのかを想像しながら考えると理解が深まると思います。

問題

データベースの障害回復処理に関する記述のうち,適切なものはどれか。

  • ア 異なるトランザクション処理プログラムが,同一データベースを同時更新することによって生じる論理的な矛盾を防ぐために,データのブロック化が必要になる。
  • イ システムが媒体障害以外のハードウェア障害によって停止した場合,チェックポイントの取得以前に終了したトランザクションについての回復作業は不要である。
  • ウ データベースの媒体障害に対して,バックアップファイルをリストアした後,ログファイルの更新前情報を使用してデータの回復処理を行う。
  • エ トランザクション処理プログラムがデータベースの更新中に異常終了した場合には,ログファイルの更新後情報を使用してデータの回復処理を行う。

アは「論理的な矛盾を防ぐために,データのブロック化が必要」という部分が違います。データのブロック化はデータの転送方法をやりやすくするために行います。


イは正解です。状況がわかりにくいのでChatGPTに想定してもらいました。

想定: データベースシステムが運用中に電源障害により突然停止したとします。最後のチェックポイントが午前10時に取得され、障害発生は午前10時15分でした。

  1. チェックポイントの取得: 午前10時の時点でデータベースシステムは、その時点までの全ての完了したトランザクションに関する情報(変更されたデータや状態など)をディスクに安全に保存します。このプロセスをチェックポイント取得と言います。
  2. 障害発生: 午前10時15分に電源障害が発生し、システムが停止しました。この時点で処理中だったトランザクションは完了していません。
  3. システムの回復: 電源が回復し、システムが再起動された際、データベース管理システムは最後のチェックポイント(午前10時の状態)からシステムの状態を復元します。
  4. 回復作業の不要性: ここで重要なのは、チェックポイント取得以前に終了したトランザクションについては、既にディスク上に安全に記録されているため、特別な回復作業は不要であるという点です。これらのトランザクションは完了しており、その影響はすでにデータベースの状態に反映されています。
  5. 未完了トランザクションの処理: 一方で、チェックポイント取得後から障害発生までの間に開始されたが完了していないトランザクションは、データの一貫性を保つためにロールバック(変更の取り消し)が行われます。

この例では、チェックポイントの利用により、システム障害からの回復時に必要な作業を最小限に抑えることができ、データベースの整合性と一貫性を保つことができます。


ウは媒体障害なのでハードディスクが物理的に壊れたという状況です。特にトランザクションが走っているという記述もないため手順としては以下となります。

フルバックアップデータを復元→更新後ログから復元したデータを付け足す。

回答には更新前情報とあるので間違いになります。


エはトランザクション処理プログラムがデータベースの処理中に以上終了したという状況ですので、更新前のログを利用してトランザクションが開始される前の状態に戻すロールバック処理が行われます。


投稿日

カテゴリー:

, , ,

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)