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

平成23年度特別 データベーススペシャリスト 午前Ⅱ 問15

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

問題

データベースのトランザクションT2の振る舞いのうち,ダーティリード(dirty read)に関する記述はどれか。

選択肢

  1. ア
    トランザクションT1が行を検索し,トランザクションT2がその行を更新する。その後T1は先に読んだ行を更新する。その後にT2が同じ行を読んでも,先のT2による更新が反映されない値を得ることになる。
  2. イ
    トランザクションT1が行を更新し,トランザクションT2がその行を検索する。その後T1がロールバックされると,T2はその行に存在しない値を読んだことになる。
  3. ウ
    トランザクションT2がある条件を満たす行を検索しているときに,トランザクションT1がT2の検索条件を満たす行を挿入する。その後T2が同じ条件でもう一度検索を実行すると,前回は存在しなかった行を読むことになる。
  4. エ
    トランザクションT2が行を検索し,トランザクションT1がその行を更新する。その後T2が同じ行を検索した場合,同じ行を読んだにもかかわらず,異なる値を得ることになる。
解き方のヒントを見る

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

トランザクションの開始から終了までを一つのまとまりとして捉え、処理の区切り、途中状態の扱い、整合性が保たれる条件の関係を整理する観点を確認します。設問ごとに丁寧に見ます。

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

この問題では、処理のどの時点を一つの単位として扱うかに焦点を絞り、境界の前後で状態や制約をどう捉えるべきかを、用語の定義と処理の流れに沿って確認してください。

視点

トランザクションは複数の処理をまとめて考えるための単位です。開始点と終了点を整理し、処理途中の状態と区切り後の状態を混同しないように、整合性という観点から設問の記述を読み比べます。

確認ポイント

  • 処理の開始点と終了点がどこに置かれているかを確認する
  • 途中の状態と区切り後の状態を分けて整理する
  • 整合性に関する記述がどの範囲を対象にしているかを見る
正解と解説を見る

正解

イ

解説

ダーティリードは、他トランザクションが確定していない更新を読み、その後のロールバックによって実在しない値を読んだ状態になる現象です。したがって該当するのはイです。

理由

イでは、T1が行を更新した後、その更新が確定する前にT2が検索している。その後T1がロールバックすると、T2が読んだ値はデータベースに存在しない値になる。この未確定更新の読取りがダーティリードです。

比較

アは同じ行への更新が後続更新で失われる更新消失、ウは再検索で新たな行が現れるファントムリード、エは同じ行を再読して値が変わる反復不能読取りを表します。

選択肢ア

これは不正解だよ。T1が読んだ行を更新し、その後T2が同じ行を読んだときにT2の更新が反映されないという記述は、同じデータに対する更新が互いに上書きされる更新消失を示す。未確定の更新を読んで後から取り消されるダーティリードではない。

選択肢イ(正解)

これは正解だよ。T1が行を更新した後、その更新が確定する前にT2が検索している。その後T1がロールバックすると、T2はデータベースに存在しない値を読んだことになる。このような未確定更新の読取りがダーティリードである。

選択肢ウ

これは不正解だよ。T2の検索中にT1が検索条件を満たす行を挿入し、T2が同じ条件で再検索して新しい行を読むという記述は、検索結果に行が増えるファントムリードを示す。更新前の値を読む現象ではない。

選択肢エ

これは不正解だよ。T2が同じ行を二度検索する間にT1がその行を更新し、二回の読取りで異なる値を得るという記述は、反復不能読取りを示す。T1の未確定更新を読んでロールバックの影響を受けるダーティリードとは異なる。

学習のポイント

ダーティリードと、更新消失・ファントムリード・反復不能読取りを区別する。

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

関連する過去問一覧

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