ファントムリード
Phantom Read
ふぁんとむりーど
同一トランザクション内で同じ検索条件でデータを2回読み取った際に、他のトランザクションの挿入・削除により行数が変化する現象。REPEATABLE READ分離レベル以下で発生しうる。SERIALIZABLE分離レベルで防止できる。
Related
他の資格での定義
1つのトランザクションの中で同じ条件の検索を2回行ったとき、その間に他のトランザクションが条件に合う行を挿入してコミットしたために、1回目には無かった行が現れる現象。既に読んだ行にロックを掛けても防げず、SQL標準では隔離性水準をSERIALIZABLEにする必要がある。
同一トランザクション内で同じ検索条件でデータを2回読み取った際に、他のトランザクションの挿入・削除により行数が変化する現象。REPEATABLE READ分離レベル以下で発生しうる。SERIALIZABLE分離レベルで防止できる。
1つのトランザクションの中で同じ条件の検索を2回行ったとき、その間に他のトランザクションが条件に合う行を追加(または削除)してコミットしたために、結果の行の集合が変わる現象。既存の行へのロックでは防げず、SQL標準では隔離性水準をSERIALIZABLEにする必要がある。
Past Exams
過去問での出題
過去問で 2 回出題(データベーススペシャリスト試験 2)
出典: 独立行政法人情報処理推進機構(IPA)の過去問題。問題文は IPA のサイトの PDF で確認できます。「選択肢」は、問題文ではなく選択肢に出たものです。用語名で照合しているため、関係の薄い問題が含まれることがあります。
Related
関連キーワードの用語
あるトランザクションがコミットしていないデータを、別のトランザクションが読み取ってしまう現象。READ UNCOMMITTED分離レベルで発生しうる。読み取ったデータがロールバックされると不整合が生じる。
同一トランザクション内で同じデータを2回読み取った際に、他のトランザクションの更新により異なる値が返される現象。READ COMMITTED分離レベル以下で発生しうる。
データの複数のバージョンを保持し、各トランザクションが適切なバージョンを参照する同時実行制御方式。読取りがロックを必要としないため、読取りと書込みが互いにブロックしない。PostgreSQLやOracleが採用。
複数のプロセスやトランザクションが共有資源に同時アクセスする際に、データの整合性を保つための制御機構。セマフォ、ミューテックスなどのOS同期機構や、ロック方式(共有ロック・専有ロック)、MVCC等のデータベース制御手法がある。デッドロックの防止も重要な課題。
同時実行されるトランザクション間の干渉の度合いを制御する設定。READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEの4段階がある。レベルが高いほど整合性は保たれるが同時実行性は低下する。
NoSQLデータベースが重視する特性。基本的に可用(Basically Available)、厳密な一貫性は保証しない柔らかい状態(Soft State)、結果的に一貫する(Eventually Consistent)。ACID特性と対比される概念。
