IPA過去問ドリル

平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15

テクノロジ/データベース

SQLでトランザクションの隔離性水準をREAD COMMITTEDに指定したときに発生する状態はどれか。

出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15

正解:ウ

解説

READ COMMITTEDは,他のトランザクションがコミットしていない未確定の更新結果を読まないようにする隔離性水準であり,これによってダーティリードは発生しない。しかし,同一トランザクション内で同じ行を2回以上読み込む間に,他のトランザクションによる更新・コミットを妨げないため,1回目と2回目で読み込む値が異なってしまうアンリピータブルリード(反復不能読取り)や,同じ条件で再検索した際に,他のトランザクションの挿入・削除によって結果行の集合が変化してしまうファントムリードは防止されない。

選択肢ごとの解説

  • 誤り。READ COMMITTEDは,未コミットのデータを読まないようにすることでダーティリードを防止する隔離性水準であり,ダーティリードが発生するというのは誤りである。
  • 誤り。READ COMMITTEDでは,アンリピータブルリードは防止されず発生し得るため,「ファントムリードだけが発生する」という記述は誤りである。
  • 正しい。READ COMMITTEDは,ダーティリードは防止するが,アンリピータブルリードとファントムリードは防止しないため,これらは発生し得る。
  • 誤り。ダーティリードは防止されるが,アンリピータブルリードとファントムリードは防止されないため,「いずれも発生しない」というのは誤りである。これを実現するにはより厳格なREPEATABLE READやSERIALIZABLEが必要である。
データベーススペシャリストの過去問を演習モードで解く