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

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

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

問題

トランザクションの隔離性水準のうち,次の(1),(2)に該当するSQLの指定はどれか。 (1)対象の表のダーティリードは回避できる。 (2)一つのトランザクション中で,対象の表のある行を2回以上参照する場合,1回目の読込みの列値と2回目以降の読込みの列値が同じであることが保証されない。

選択肢

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

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

処理のまとまりをどこで区切るか、途中状態が他の処理からどう見えるか、失敗時に何を確認対象とするかを順に整理し、用語の役割と前提条件を照合する。設問の状況ごとに分けて考える。

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

一連の処理を開始・終了・中断の単位に分け、各時点で守るべき整合性の条件と、別の処理との関係を整理する。用語だけで判断せず、前後の状態を比較する視点を保つ。

視点

境界を考えるときは、処理の前後でデータの状態がどう変わるか、途中の状態が扱われる可能性があるか、異常時にどの範囲を見直すかを分けて整理する。

確認ポイント

  • 処理の開始と終了の区切りを確認する
  • 途中状態と完了後の状態を区別する
  • 失敗時に確認すべき範囲を整理する
正解と解説を見る

正解

ア

解説

(1)は未コミットの更新を読まない性質を示し、(2)は同じ行を再読込みした際の値の一致を保証しない性質を示します。この組合せに該当するのはREAD COMMITTEDです。

理由

READ COMMITTEDでは、ほかのトランザクションがコミットしていない更新を読み込むダーティリードを回避できる。一方、同じトランザクション中に再読込みするまでの間に、別の更新がコミットされる可能性があるため、同じ列値が保たれるとは限らない。

比較

READ UNCOMMITTEDは未コミットの更新を読む可能性があり、(1)を満たさない。REPEATABLE READとSERIALIZABLEは、同じ行の再読込みで値が変わらないことを保証する水準なので、(2)の記述には該当しない。

選択肢ア(正解)

これは正解だよ。READ COMMITTEDは、ほかのトランザクションがコミットする前の更新を読み込むダーティリードを回避できる。一方、同じ行を再読込みする前に別の更新がコミットされる可能性があり、1回目と2回目以降の列値が同じになることまでは保証しない。

選択肢イ

これは不正解だよ。READ UNCOMMITTEDは、ほかのトランザクションによる未コミットの更新を読み込む可能性がある水準である。そのため、対象表のダーティリードを回避できるという(1)の条件を満たさない。

選択肢ウ

これは不正解だよ。REPEATABLE READは、同じトランザクションで同じ行を再読込みしたとき、1回目と異なる値を読まないことを保証する水準である。したがって、再読込み後の列値が同じと保証されない(2)とは一致しない。

選択肢エ

これは不正解だよ。SERIALIZABLEは、トランザクションを直列に実行した場合と同等の結果になるよう最も強く隔離する水準である。ダーティリードを回避でき、同じ行の再読込み結果も保護されるため、(2)の条件には該当しない。

学習のポイント

隔離性水準は、ダーティリードと再読込み時の一貫性を分けて比較する。

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

関連する過去問一覧

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