令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12
テクノロジ/データベース二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12
- アトランザクション A がある検索条件を満たす,ある表の行の集合を参照した。次に,トランザクション B がトランザクション A と同じ検索条件を満たす新しい行を挿入しコミットした。その後,トランザクション A が同じ検索条件で再度参照すると,以前には存在しなかった行が出現した。
- イトランザクション A がある表の行の列を参照した。次に,トランザクション B がその列の値を更新しコミットした。その後,トランザクション A がその列を再度参照すると,以前の値と異なった。
- ウ二つのトランザクションがそれぞれ 2 相ロックをかけ,デッドロックを起こした。
- エまだコミットしていないトランザクション A の更新後データをトランザクション B が参照した。その後,更新後データはロールバックされた。
正解:エ
解説
ダーティリードとは,あるトランザクションがまだコミットしていない(確定していない)更新後のデータを,別のトランザクションが読み取ってしまう現象です。設問のように,更新後データを参照した後で更新元のトランザクションがロールバックすると,参照した側は実際には存在しない(取り消された)データに基づいて処理を行ったことになります。
選択肢ごとの解説
- ア誤り。これはファントムリード(幻想読取り)の説明であり,他のトランザクションが挿入・コミットした行が,同じ検索条件の再参照で新たに出現する現象です。
- イ誤り。これは非再現読取り(non-repeatable read)の説明であり,他のトランザクションがコミットした更新によって,同じ行を再参照したときに値が変わってしまう現象です。
- ウ誤り。これはデッドロックの説明であり,複数のトランザクションが互いにロックの解放を待ち合って処理が進まなくなる現象です。
- エ正しい。まだコミットされていない更新後データを他のトランザクションが参照し,その後更新元がロールバックされる現象が,ダーティリードの説明です。