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

令和3年度秋期 データベーススペシャリスト 午前Ⅱ 問7

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

問題

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

選択肢

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

トランザクション隔離性の読み分け

二つの記述がそれぞれどの読込み現象を扱い、同じ表への参照結果にどの程度の一貫性を求めているのかを整理し、隔離性水準を比較する視点を持ちましょう。

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

一時点の読込み結果を保護する観点と、同一トランザクション内で複数回参照した結果の関係に注目し、示された保証と未保証の組合せを読み取りましょう。

視点

隔離性水準は、並行実行中に他の処理の影響が読込みへ現れる可能性を、複数の現象ごとに整理する考え方です。各条件がどの現象を述べているかを分けて考えます。

確認ポイント

  • (1)が対象としている読込み上の現象を確認する
  • (2)が同一トランザクション内の参照回数と結果の関係について何を述べているか確認する
  • 二つの保証条件を同時に満たす隔離性の位置づけを、用語の定義と照合する
正解と解説を見る

正解

ア

解説

(1)は未コミットの更新を読まないことを示し、(2)は同一トランザクション内で再読した値が変わらないことまでは保証しないことを示します。この組合せはREAD COMMITTEDに該当します。

理由

READ COMMITTEDでは、他のトランザクションがまだ確定していない更新を読み込むダーティリードを回避できます。一方、同じトランザクション中に同じ行を再度読むまでの間に、別のトランザクションが更新を確定する可能性があるため、1回目と2回目の列値が同じであることまでは保証されません。

比較

READ UNCOMMITTEDは未確定の更新を読めるため(1)を満たしません。REPEATABLE READは同じ行の再読値を保証する水準であり(2)と合いません。SERIALIZABLEもさらに強い保証を持つため、設問の条件には該当しません。

選択肢ア(正解)

これは正解だよ。READ COMMITTEDは、他のトランザクションがまだコミットしていない更新を読むダーティリードを回避できます。ただし、同じ行を再読したときに別トランザクションの確定更新が反映され、1回目と異なる値になる可能性までは排除しません。設問の(1)と(2)の両方に一致します。

選択肢イ

これは不正解だよ。READ UNCOMMITTEDは、他のトランザクションによる未コミットの更新を読み込むことを許す隔離性水準です。そのため、ダーティリードを回避できるという設問(1)の条件を満たしません。再読時の値が保証されない点だけでは、(1)との不一致を補えません。

選択肢ウ

これは不正解だよ。REPEATABLE READは、同一トランザクション内で同じ行を複数回読み込んだとき、読込み結果が変わらないことを保証する水準です。設問(2)はその保証がない場合を示しているため、REPEATABLE READの性質とは一致しません。

選択肢エ

これは不正解だよ。SERIALIZABLEは、同時実行されたトランザクションの処理を直列実行に近い結果となるよう制御する、より強い隔離性水準です。同じ行の再読値が変わらないことも保証するため、設問(2)の条件である保証されない状態には該当しません。

学習のポイント

READ COMMITTEDと、より強い隔離性水準の保証範囲の違いを、ダーティリードと再読の観点で理解する。

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

関連する過去問一覧

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