DBデータベーススペシャリスト試験 午前Ⅱ

平成21年度春期 データベーススペシャリスト 午前Ⅱ 問11

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

更新前情報と更新後情報をログとして利用するDBMSにおいて,ログを先に書き出すWAL(Write Ahead Log)プロトコルに従うとして,処理①~⑥を正しい順番に並べたものはどれか。 ① begin transaction レコードの書出し ② データベースの実更新 ③ ログに更新前レコードの書出し ④ ログに更新後レコードの書出し ⑤ commit レコードの書出し ⑥ end transaction レコードの書出し

選択肢

  1. ア
    ①→②→③→④→⑤→⑥
  2. イ
    ①→③→②→④→⑥→⑤
  3. ウ
    ①→③→②→⑤→④→⑥
  4. エ
    ①→③→④→②→⑤→⑥
解き方のヒントを見る

ログと更新の関係を整理する視点

ログとデータ更新を考えるときは、各段階で何が記録され、どの時点で状態が変わり、障害時にどこまで追跡できるかを切り分けて確認しましょう。順序を暗記せず、役割と依存関係に注目します。

この問題で問われていること

選択肢を比べる際は、記録される情報とデータ状態の変化がどのような依存関係を持つか、途中で処理が止まった場合に各段階を説明できるかという一点に絞って見直しましょう。

視点

処理を開始、記録、状態変更、完了確認などの段階に分け、それぞれの役割と前後関係を図式化して整理します。

確認ポイント

  • 各段階で記録対象と状態変化を区別できているか
  • 処理途中の停止や障害を想定して追跡範囲を考えたか
  • 順序だけでなく段階同士の依存関係に注目したか
正解と解説を見る

正解

エ

解説

WALでは、データベース本体を更新する前に更新前後の情報をログへ記録し、その後に実更新を行う。更新が完了してからcommit、最後にend transactionを記録するため、処理順は①→③→④→②→⑤→⑥となる。

理由

まず①でトランザクション開始を記録する。次に、障害時のUNDOに使う更新前レコード③と、REDOに使う更新後レコード④を、データベース本体の更新②より先にログへ書き出す。これがWrite Ahead Logの要件です。

比較

ログが必要な情報を確保した後で②を実行し、処理が完了したことを⑤のcommitレコードで示す。⑥のend transactionレコードはトランザクションの終了を示すため、commitの後に置かれる。したがって正しい並びはエです。

選択肢ア

これは不正解だよ。①の開始記録の後に②でデータベースを実更新しており、③と④のログがその後になっている。WALでは、データベース本体の更新より先に復旧用ログを書き出す必要があるため、①→②→③→④→⑤→⑥の順序は条件に反する。

選択肢イ

これは不正解だよ。①→③→②までは、開始記録と更新前ログの後に実更新を置く点で一部の条件に沿う。しかし④の更新後レコードが②の後であり、さらに⑥のend transactionが⑤のcommitより先になっているため、ログ記録と終了処理の順序が正しくない。

選択肢ウ

これは不正解だよ。①→③→②の後に⑤のcommitを記録しているが、④の更新後レコードがcommitの後に置かれている。更新後情報をログに記録する前に完了を示すと、障害時にREDOに必要な情報が不足するため、WALの要件を満たさない。

選択肢エ(正解)

これは正解だよ。①で開始を記録し、③と④で更新前後の情報をデータベース更新②より先にログへ書き出している。その後に⑤でcommitを記録し、⑥でend transactionを記録するため、WALのログ先行とトランザクション終了の順序に一致する。

学習のポイント

WALの基本原則と、commitおよびend transactionの役割の違いを理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成21年度春期 データベーススペシャリスト試験 午前Ⅱ 問11(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針