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

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

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

問題

厳格な2相ロッキングプロトコルと表ロックを適用して,同時実行している他のトランザクションの処理結果に影響を与えないようにする。実現されるトランザクションの隔離性水準はどれか。

選択肢

  1. ア
    READ UNCOMMITTED
  2. イ
    READ COMMITTED
  3. ウ
    REPEATABLE READ
  4. エ
    SERIALIZABLE
解き方のヒントを見る

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

処理のまとまりをどこで区切るかに注目し、複数の更新や参照が同じ作業単位に属するか、途中状態が他の処理へ影響しないかを整理して考えるための視点を示します。周辺条件も確認します。

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

判断では、処理開始から完了までの依存関係を一つの流れとして追い、途中で失敗・中断・同時実行が起きた場合に、どの状態が観測され得るかという一点に絞って確認します。前後の処理との境目も併せて整理します。

視点

トランザクションの境界を考えるときは、業務上ひとまとまりの目的、関連するデータ操作の依存関係、処理途中の状態が外部から見える可能性を分けて整理します。さらに、成功・失敗・中断・並行実行という観点を並べ、どこまでを同じ単位として扱うと説明しやすいかを検討します。

確認ポイント

  • 処理の開始点と終了点が、業務上の一つの目的に対応しているか確認する
  • 途中で中断や失敗が起きたときに、確認対象となる状態を整理する
  • 前後の処理や同時実行との依存関係が境界の判断に影響するか確認する
正解と解説を見る

正解

エ

解説

厳格な2相ロッキングプロトコルと表ロックを用いると、トランザクション間の競合を直列実行に相当する形で制御できるため、最も高い隔離性水準が実現される。

理由

厳格な2相ロッキングでは、トランザクションが保持するロックを処理の完了まで維持する。表ロックによって対象表への競合アクセスも制御されるため、同時実行された処理が互いの結果に影響しないように扱われる。これは直列化可能な実行結果を保証する考え方です。

比較

READ UNCOMMITTEDは未コミットデータの読取りを許し、READ COMMITTEDはコミット済みデータだけを対象とする。REPEATABLE READは同じデータの再読取り結果を保つ水準です。設問のロック方式が実現する水準は、それらより強い隔離性を示します。

選択肢ア

これは不正解だよ。READ UNCOMMITTEDは、他のトランザクションがまだコミットしていない変更を読み取ることを許す隔離性水準である。設問のように、厳格な2相ロッキングと表ロックで同時実行処理の干渉を防ぐ条件とは一致せず、保証される隔離性が弱すぎる。

選択肢イ

これは不正解だよ。READ COMMITTEDは、読み取るデータがコミット済みであることを保証する水準だが、トランザクション間の処理順序を完全に直列化するものではない。設問では厳格なロックによって、単なる未コミットデータの排除を超えた隔離性が実現される。

選択肢ウ

これは不正解だよ。REPEATABLE READは、同一トランザクション内で既に読んだデータを再度読む場合の一貫性を保つ水準である。しかし、設問の厳格な2相ロッキングと表ロックが示す保証は、再読取りの一貫性だけに限定されず、処理全体の直列化に及ぶ。

選択肢エ(正解)

これは正解だよ。SERIALIZABLEは、同時実行されたトランザクションの結果が、何らかの直列実行と同じになる最も強い隔離性水準である。厳格な2相ロッキングはロックを処理完了まで保持し、表ロックは競合するアクセスを制御するため、この水準に対応する。

学習のポイント

2相ロッキングと四つの隔離性水準の関係を整理する。

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

関連する過去問一覧

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