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

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

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

問題

SQLでトランザクションの隔離性水準をREAD COMMITTEDに指定したときに発生する状態はどれか。

選択肢

  1. ア
    ダーティリードとアンリピータブルリードとファントムリードが発生する。
  2. イ
    ダーティリードとアンリピータブルリードは発生しないが,ファントムリードが発生する。
  3. ウ
    ダーティリードは発生しないが,アンリピータブルリードとファントムリードが発生する。
  4. エ
    ダーティリードもアンリピータブルリードもファントムリードも発生しない。
解き方のヒントを見る

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

トランザクションを考えるときは、処理のまとまりをどこで区切るかに注目し、途中状態と最終状態を分けて整理します。複数操作の関係、失敗時の扱い、他処理との干渉を順に確認しましょう。

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

この問題では、操作列のどの範囲が一つの単位として扱われ、境界の前後で整合性や他処理との関係をどう考えるべきか、という観点に絞って確認します。個別の選択肢はこの視点で整理してください。

視点

一連の操作を小さな処理の集まりとして捉え、開始点・終了点・途中経過を区別します。そのうえで、処理が分割された場合に状態の見え方や整合性の判断対象がどう変わるかを比較してください。

確認ポイント

  • 操作列のどこからどこまでを一つの処理単位として読むか
  • 途中で失敗や中断が起きた場合に確認対象となる状態
  • 別の処理が同時に関わる可能性と整合性への影響
正解と解説を見る

正解

ウ

解説

READ COMMITTEDは、未確定の更新を読み取る現象を防ぐ一方、読取り後に確定した変更までは固定しない。そのため、同じ行の値や検索結果集合が変化する現象は発生し得る。

理由

READ COMMITTEDでは、他トランザクションがまだコミットしていない変更は読み取らないので、ダーティリードは発生しない。一方、最初の読取り後に別トランザクションの更新や挿入がコミットされると、同じ読取りを行った際の値や結果集合が変わる可能性がある。

比較

アンリピータブルリードは、同じ行を再度読んだときに値が変わる現象であり、ファントムリードは検索条件に合う行の集合が変わる現象です。READ COMMITTEDはこれらを防止する水準ではないため、両方が発生し得る。

選択肢ア

これは不正解だよ。READ COMMITTEDでは、未コミットの更新を読み取るダーティリードは発生しない。アンリピータブルリードとファントムリードが発生し得る点だけは合っているが、三つすべてが発生するという記述は誤りである。

選択肢イ

これは不正解だよ。ダーティリードが発生しないという前半は正しい。しかし、READ COMMITTEDでは同じ行の値が変わるアンリピータブルリードも防止されないため、「発生しない」とする部分が誤っている。

選択肢ウ(正解)

これは正解だよ。READ COMMITTEDは未コミットの更新を読まないのでダーティリードは発生しない。一方、別トランザクションのコミット後に再読取りすると、行の値や検索結果集合が変わる可能性があり、アンリピータブルリードとファントムリードが発生し得る。

選択肢エ

これは不正解だよ。READ COMMITTEDでダーティリードを防げる点は正しいが、読取り後にコミットされた更新や挿入の影響までは固定されない。そのため、アンリピータブルリードとファントムリードまで発生しないとする記述は誤りである。

学習のポイント

隔離性水準ごとに、三つの読取り現象を個別に整理する。

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

関連する過去問一覧

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