基本情報技術者試験「隔離性と発生現象」の問題
あるトランザクションが同一の検索条件で2回問合せを行ったところ、1回目には存在しなかった行が2回目に出現した。他トランザクションが条件に合う行を新たに挿入しコミットしたことが原因である。この現象を何というか。
アデッドロック
イダーティリード(未コミットの値の読取り)
ウ反復不能読取り(同一行の値が変化)
エファントムリード
正解
エ.ファントムリード
ファントムリードは、同一条件の再検索の間に他トランザクションが条件に合う行を挿入(または削除)してコミットしたため、結果行の集合が変わる現象である。設問の『なかった行が出現』に一致し正しい。
?選択肢ごとの解説
ア ×デッドロックは複数トランザクションが互いの保持資源を待ち合い処理が進まなくなる状態であり、再検索で行数が変わる現象とは異なる。
イ ×ダーティリードは他トランザクションの未コミットの値を読んでしまう現象であり、行の出現ではなく確定前の値の読取りが問題となる。
ウ ×反復不能読取りは同一『行』を再読込した際に値が更新されて変わる現象であり、行集合に新たな行が増えるファントムとは区別される。
エ ○ファントムリードは、同一条件の再検索の間に他トランザクションが条件に合う行を挿入(または削除)してコミットしたため、結果行の集合が変わる現象である。設問の『なかった行が出現』に一致し正しい。
✎くわしく
隔離性レベルが緩いと、ダーティリード(未コミット値の読取り)・反復不能読取り(同一行の値変化)・ファントムリード(行集合の変化)が発生し得る。READ COMMITTED でダーティリードを、REPEATABLE READ で反復不能読取りを防ぎ、SERIALIZABLE でファントムまで防ぐ。対象が『値』か『行の集合』かで反復不能読取りとファントムを見分ける。
✓本番での押さえどころ
試験のコツ
三現象を対象で判別する: 未コミット値=ダーティ、同一行の値変化=反復不能読取り、行の出現消滅=ファントム。
覚え方
ファントム(幻)=『いなかったはずの行が幽霊のように現れる』と語感で覚える。
よくある誤り
反復不能読取りとファントムリードを混同する。『同じ行の値が変わる=反復不能読取り』『行が増減する=ファントム』と対象で区別する。
データベースの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0251