令和6年度 秋期 データベーススペシャリスト試験 午前II 問12
二つのトランザクションが,同じデータに対して,更新,参照を行うときに発生し得るダーティリードの事象を記述したものはどれか。
解答・解説
正解: エ. まだコミットしていないトランザクションAの更新後データをトランザクションBが参照した。その後,更新後データはロールバックされた。
ダーティリード(Dirty Read)とは、他のトランザクションがまだコミットしていない(確定していない)変更途中のデータを読み取ってしまう現象です。
トランザクションAがデータを更新し、まだコミットしていない状態のデータをトランザクションBが読み取った後、トランザクションAがロールバック(取り消し)された場合、トランザクションBは実際には存在しない無効なデータを読み取って処理を進めてしまうことになります。これにより、データの不整合が発生する可能性があります。
したがって、未コミットのデータを参照し、その後ロールバックされる事象を説明しているエが正解となります。
各選択肢の解説
- ア:ファントムリード(Phantom Read)の説明です。トランザクションAが処理を行っている最中に、トランザクションBが新しいデータを挿入(または削除)したことで、トランザクションAが再度同じ条件で検索した際に出現する行が増減してしまう現象です。
- イ:ノンリピータブルリード(Non-repeatable Read)の説明です。トランザクションAがデータを読み込んだ後、トランザクションBがそのデータを更新・コミットしたため、トランザクションAが再度同じデータを読み込んだ際に値が変わってしまう現象です。
- ウ:デッドロックの説明です。複数のトランザクションが互いに相手がロックしている資源の解放を待ち合い、処理が完全に停止してしまう現象です。
- エ:正解です。ダーティリードの説明です。