基本情報技術者試験「隔離性レベル」の問題
あるトランザクションが、別のトランザクションがまだ確定(コミット)していない更新途中のデータを読み取ってしまう現象はどれか。
ア同一問合せの再実行で行数が変わる現象(ファントムリード)
イ未確定値を読むダーティリード
ウ再読込みで同じ行の値が変わる反復不能読取り(ノンリピータブルリード)
エ更新が相互に上書きされ失われる更新喪失(ロストアップデート)
正解
イ.未確定値を読むダーティリード
ダーティリードは他トランザクションが未コミットの更新途中データを読み取る現象。もしその更新がロールバックされれば存在しなかった値を読んだことになる。設問の説明に一致するため正しい。
?選択肢ごとの解説
ア ×ファントムリードは同一条件の再検索で前回なかった行が現れる現象であり、未確定値の読取りとは異なる。
イ ○ダーティリードは他トランザクションが未コミットの更新途中データを読み取る現象。もしその更新がロールバックされれば存在しなかった値を読んだことになる。設問の説明に一致するため正しい。
ウ ×反復不能読取りは同じ行を再読込みした際に値が変わっている現象であり、対象はコミット済みの変更である。
エ ×更新喪失は複数の更新が互いに上書きして消える現象であり、読取りに関する異常ではない。
✎くわしく
分離レベルはREAD UNCOMMITTED→READ COMMITTED→REPEATABLE READ→SERIALIZABLEと厳しくなり、順にダーティリード、反復不能読取り、ファントムリードを防ぐ。レベルを上げるほど一貫性は増すが並行性は下がる。
✓本番での押さえどころ
試験のコツ
『未確定を読む=ダーティ』『同じ行の値が変わる=反復不能』『行が増える=ファントム』と現象で切り分ける。
覚え方
ダーティ(汚れた)リードは『まだ乾いていないインク(未確定)を読む』。後で消えるかもしれない値、と覚える。
よくある誤り
ダーティリード(未確定値)、反復不能読取り(値の変化)、ファントムリード(行数の変化)の3異常を混同する誤りが多い。
データベースの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0057