トランザクション分離レベルの特性

正解の理由 SQL標準における4つのトランザクション分離レベル(隔離性水準)と発生する現象(アノマリー)の関係を整理します。 分離レベル ダーティリード ノンリピータブルリード ファントムリード READ UNCOMMITTED 発生する 発生する 発生する READ COMMITTED 回避できる 発生する 発生する REPEATABLE READ 回避できる 回避できる 発生する SERIALIZABLE 回避できる 回避できる 回避できる 問題文の条件を当てはめます。 (1) ダーティリードは回避できる → READ COMMITTED、REPEATABLE READ、SERIALIZABLE のいずれか。 (2) 同一トランザクション内で同じ行を複数回参照した際、値が同じであることが保証されない(ノンリピータブルリード/ファジーリードが発生する) → READ COMMITTED のみ。 したがって、条件に合致する隔離性水準は READ COMMITTED(コミット読取り)であり、アが正解です。 各選択肢の解説 正しい記述です。コミット済みのデータのみを読み取るためダーティリードは防げますが、他トランザクションによる更新コミットによって再読込み時に値が変わる可能性があります。 未コミットのデータまで読み取ってしまうため、ダーティリードを回避できません。 行に対する共有ロックなどを保持し続けることで、同一行の再読込み時に同一値が保証されます(ノンリピータブルリードを回避できる)。 直列化可能であり、すべての現象(ダーティリード、ノンリピータブルリード、ファントムリード)が完全に回避されます。

次の (1),(2) に該当するトランザクションの隔離性水準はどれか。

  1. (1)

    対象の表のダーティリードは回避できる。

  2. (2)

    一つのトランザクション中で,対象の表のある行を 2 回以上参照する場合,1 回目の読込みの列値と 2 回目以降の読込みの列値が同じであることが保証されない。

出典2021r03a_db_am2_問7
ア
READ COMMITTED
イ
READ UNCOMMITTED
ウ
REPEATABLE READ
エ
SERIALIZABLE