ダーティリード防止と反復不能読みが発生するトランザクション分離レベル(READ COMMITTED)

SQL標準におけるトランザクション分離レベル(隔離性水準)と発生し得る現象に関する問題です。 SQL標準で定義されている4つの分離レベルと現象の発生可否は以下の通りです。 READ UNCOMMITTED: ダーティリード、反復不能読み(曖昧読込み)、ファントムリードすべてが発生し得る。 READ COMMITTED: ダーティリードは回避できるが、反復不能読みとファントムリードは発生し得る。 REPEATABLE READ: ダーティリードと反復不能読みは回避できるが、ファントムリードは発生し得る。 SERIALIZABLE: すべての現象が完全に回避され、直列実行と等価な結果が保証される。 設問の条件(1)「ダーティリードは回避できる」および条件(2)「同一トランザクション内での複数回読込みで列値の一致が保証されない(反復不能読みが発生する)」を満たすのは `READ COMMITTED` です。したがって、ア が正解です。 READ UNCOMMITTED ではコミット前の未確定データを読み込んでしまうダーティリードが発生します。 REPEATABLE READ では同一行を複数回読み込んだ際に常に同じ値が返ることが保証され、反復不能読みは回避されます。 SERIALIZABLE ではすべての不整合現象が完全に防止されます。

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

  1. (1)

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

  2. (2)

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

出典平成31年春期 午前Ⅱ
ア
READ COMMITTED
イ
READ UNCOMMITTED
ウ
REPEATABLE READ
エ
SERIALIZABLE