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

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

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

問題

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

選択肢

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

更新処理を読むための確認視点

更新に関する設問では、用語だけで判断せず、処理が進む順序と各段階で記録される情報の役割を対応させて考え、説明全体のつながりを確認することが大切です。

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

一つの処理を時間の流れに沿って追い、実行前後の状態、記録されるタイミング、後続処理との関係を区別して整理し、説明同士の整合性を確認しましょう。

視点

更新処理を時系列に並べ、状態の変化と記録の役割を別々に書き出してから、各説明が同じ順序関係を前提としているかを確かめます。

確認ポイント

  • 処理の開始から完了までを時系列で区切り、各時点の状態を整理する。
  • 記録が表す対象と、それが参照される場面を対応づけて確認する。
  • 前後関係を入れ替えた場合に、説明全体の整合性が保たれるか検討する。
正解と解説を見る

正解

エ

解説

WALでは、データベースの更新に先立って更新前後のレコードをログへ記録し、その後にコミットとトランザクション終了を記録します。したがって正しい順序は①→③→④→②→⑤→⑥です。

理由

まずトランザクション開始を記録します。次に、更新前レコードと更新後レコードをログへ書き出します。これらのログが保存された後でデータベースを更新し、コミット、トランザクション終了の順に記録します。

比較

WALの要点は、データベースの更新がログより先にならないことです。更新前レコードはロールバック、更新後レコードはロールフォワードに利用でき、コミットは更新処理後、終了記録はその後に置かれます。

選択肢ア

これは不正解だよ。①の後に②でデータベースを更新していますが、WALではデータベース更新より先に、更新前後のレコードをログへ書き出す必要があります。また、②の後に③と④を置くため、ログ先行の原則に反しています。

選択肢イ

これは不正解だよ。①→③→②の部分では、更新前レコードを記録してから更新していますが、更新後レコード④がデータベース更新後になっています。さらに⑥の終了記録より⑤のコミット記録が後であり、終了とコミットの順序も不適切です。

選択肢ウ

これは不正解だよ。①→③の後に②を実行しているため、更新前レコードは先に記録されています。しかし、更新後レコード④より先に⑤のコミットを記録しており、更新内容に対応するログがそろう前にコミットする順序になっています。

選択肢エ(正解)

これは正解だよ。①で開始を記録し、③と④で更新前後のレコードをデータベース更新前にログへ書き出します。その後②でデータベースを更新し、⑤のコミット、⑥の終了記録へ進むため、WALの原則と各記録の順序に一致します。

学習のポイント

WALにおけるログ先行の原則と、トランザクション記録の基本順序を学びます。

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

関連する過去問一覧

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