非再現リード(ファジーリード)を防ぐトランザクション隔離性水準

問題文に記述されている現象は「非再現リード(Non-repeatable Read / ファジーリード)」と呼ばれます。 SQLの4段階のトランザクション分離レベル(隔離性水準)と発生しうる不整合現象の対応は以下の通りです: 1. READ UNCOMMITTED:ダーティリード、非再現リード、ファントムリードすべて発生 2. READ COMMITTED:非再現リード、ファントムリードが発生(ダーティリードのみ防止) 3. REPEATABLE READ:ファントムリードのみ発生(ダーティリード、非再現リードを防止) 4. SERIALIZABLE:すべての不整合を防止 非再現リードを回避できる隔離性水準の中で「最も水準の低いもの」は REPEATABLE READ です。 したがって、ウ が正解です。 READ COMMITTED ではコミット済みの更新データが即座に読み取れるため、問題文の非再現リードが発生してしまいます。 READ UNCOMMITTED は未コミットの更新データまで読み取ってしまう最低レベルであり、非再現リードを回避できません。 SERIALIZABLE は非再現リードを回避できますが、REPEATABLE READ より水準が高いため「最も水準の低いもの」の条件を満たしません。

トランザクション T1T_1 がある行 X を読んだ後, 別のトランザクション T2T_2 が行 X の値を更新してコミットし, 再び T1T_1 が行 X を読むと, 以前読んだ値と異なる値が得られた。この現象を回避する SQL の隔離性水準のうち, 最も水準の低いものはどれか。

出典2022r04a_db_am2_問14
ア
READ COMMITTED
イ
READ UNCOMMITTED
ウ
REPEATABLE READ
エ
SERIALIZABLE