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

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

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

問題

二つのトランザクションT1,T2が,データa,bに並行してアクセスする。T1,T2の組合せのうち,直列可能性を保証できるものはどれか。ここで,トランザクションの各操作の意味は次のとおりとする。 LOCK x:データxをロックする READ x:データxを読み込む WRITE x:データxを書き出す UNLOCK x:データxをアンロックする
選択肢アからエについて,トランザクションT1とT2のロック,読込み,書込み及びアンロックの実行順序を示した手順表。
選択肢アからエについて,トランザクションT1とT2のロック,読込み,書込み及びアンロックの実行順序を示した手順表。

選択肢

  1. ア
    T1・T2共通:READ a → LOCK a → LOCK b → a = a + 3 → WRITE a → READ b → b = b + 5 → WRITE b → UNLOCK a → UNLOCK b
  2. イ
    T1・T2共通:LOCK a → READ a → a = a + 3 → WRITE a → UNLOCK a → LOCK b → READ b → b = b + 5 → WRITE b → UNLOCK b
  3. ウ
    T1:LOCK a → READ a → a = a + 3 → WRITE a → UNLOCK a → LOCK b → READ b → b = b + 5 → WRITE b → UNLOCK b T2:LOCK a → READ a → LOCK b → READ b → UNLOCK a → UNLOCK b
  4. エ
    T1:LOCK a → READ a → a = a + 3 → WRITE a → LOCK b → READ b → b = b + 5 → WRITE b → UNLOCK b → UNLOCK a T2:LOCK a → READ a → LOCK b → READ b → UNLOCK b → UNLOCK a
解き方のヒントを見る

トランザクション境界の見極め方

処理の開始から完了までを一つのまとまりとして捉え、途中の失敗や並行実行がデータの整合性にどう関わるかを、境界・状態・確認順序の観点から整理しましょう。各操作の役割を分けて考えることが重要です。

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

この問題では、どの操作群を同じ処理単位として扱うかに焦点を置き、開始点・終了点・異常発生時の扱いを切り分けて、整合性を確認する順序を考えてください。個々の用語だけで判断しないようにします。

視点

トランザクションは、複数の操作を一つの処理単位として整理するための考え方です。境界を確認するときは、各操作の目的、処理途中の状態、完了後に期待される整合性を分けて捉え、全体の因果関係を追いましょう。

確認ポイント

  • 処理の開始と終了を示す境界がどこに置かれているか確認する
  • 途中で異常や中断が起きた場合に、どの状態が関係するか整理する
  • 複数の処理が関わるとき、整合性を確認する順序を意識する
正解と解説を見る

正解

エ

解説

直列可能性を保証するには、各トランザクションがロック取得を終えてからロック解放を始める二段階ロックの順序を守る必要がある。正しい組合せはエです。

理由

二段階ロックでは、最初のUNLOCKを実行して縮小フェーズに入った後、新たなLOCKを実行してはいけない。エではT1、T2ともにLOCK a、LOCK bで取得を終え、その後にUNLOCKを行っているため、この条件を満たす。

比較

アはLOCK aより前にREAD aを行い、保護されない読込みが発生する。イとウのT1はUNLOCK aの後にLOCK bを行うため、ロック解放開始後の取得となる。エだけが各トランザクションで取得段階と解放段階を分けている。

選択肢ア

これは不正解だよ。T1、T2ともにREAD aを実行してからLOCK aを取得しており、aの読込み時点でロックによる保護がない。さらに、ロック取得前にデータへアクセスする操作列なので、二段階ロックに基づく直列可能性の保証条件を満たさない。

選択肢イ

これは不正解だよ。T1、T2ともにLOCK aを解放した後でLOCK bを取得している。これはロック解放を始めた縮小フェーズの後に、再びロックを取得する順序であり、二段階ロックの条件に反するため、直列可能性を保証できない。

選択肢ウ

これは不正解だよ。T1はWRITE aの後にUNLOCK aを行い、その後でLOCK bを取得しているため、解放開始後のロック取得になっている。T2の列だけでなく、組合せ中のT1が条件に反するので、全体として直列可能性は保証できない。

選択肢エ(正解)

これは正解だよ。T1、T2ともに最初にLOCK aとLOCK bを取得し、必要なREADとWRITEを終えてからUNLOCKを行っている。つまり、ロック取得の拡張フェーズから解放の縮小フェーズへ一方向に進み、二段階ロックによる直列可能性の保証条件を満たしている。

学習のポイント

二段階ロックによる直列可能性の保証条件と、操作列の判定方法を学ぶ。

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

関連する過去問一覧

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