令和6年度 秋期 データベーススペシャリスト試験 午前II 問12
【問題12】
二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
トランザクションAがある検索条件を満たす,ある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
トランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
【解説】
ア: トランザクションAがある検索条件を満たす,ある表の行の集合を参照した。次に,トランザクションBがトランザクションAと同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクションAが同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
誤り。これはファントムリードの例であり,ダーティリードではありません。
イ: トランザクションAがある表の行の列を参照した。次に,トランザクションBがその列の値を更新しコミットした。その後,トランザクションAがその列を再度参照すると,以前の値と異なった。
誤り。これはリピータブルリードの例であり,ダーティリードではありません。
ウ: 二つのトランザクションがそれぞれ2相ロックをかけ,デッドロックを起こした。
誤り。これはデッドロックの説明であり,ダーティリードとは関係ありません。
エ: まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
正しい。これはダーティリードの典型的な例です。未コミットのデータを参照した後にロールバックされることでデータの一貫性が失われます。
【答え】
エ: まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前II 問12