令和6年度 秋期 午前Ⅱ 問12
トランザクション処理
ダーティリードに関する問題
二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
- アトランザクションAがある検索条件を満たす,ある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
- イトランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
- ウ二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
- エまだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
答えと解説を見る
✓ これが正解エまだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
解説
コミット前の更新を他が読み、その更新がロールバックされる事象です。
ダーティリードは、まだコミットされていないデータを、別のトランザクションが読んでしまうことです。トランザクションAの更新後のデータを、A がコミットする前にトランザクションBが読み、その後Aがロールバックすると、Bは結局存在しなかったことになる値をもとに処理を進めたことになります。正しくない値を読んだことになるので、ダーティ(汚れた)読込みと呼ばれます。見分ける軸は、読んだデータがコミット済みかどうかです。コミット済みの値が変わって見えるのは反復不可能な読込み、行が増えて見えるのはファントムで、未コミットの値を読むのがダーティリードと、三つを並べて覚えておきましょう。
ほかの選択肢はなぜ違うのか
- アトランザクションAがある検索条件を満たす…:同じ検索条件で再度参照したときに、他のトランザクションが挿入してコミットした行が新しく現れるのは、ファントムの説明です。読んだのはコミット済みのデータなので、ダーティリードではありません。
- イトランザクションAがある表の行の列を参照…:同じ列を再度参照したときに、他のトランザクションが更新してコミットした値に変わっているのは、反復不可能な読込みの説明です。読んだのはコミット済みの値なので、ダーティリードとは違います。
- ウ二つのトランザクションがそれぞれ2相ロッ…:二つのトランザクションが互いに相手のロックの解除を待って先に進めなくなるのは、デッドロックの説明です。データを読んだ結果の不整合ではなく、処理が止まってしまう事象です。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問15:隔離性水準に関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問14:べき等に関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)