IPA過去問ドリル

平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9

テクノロジ/データベース

トランザクションの隔離性水準のうち,次の(1),(2)に該当するSQLの指定はどれか。 (1) 対象の表のダーティリードは回避できる。 (2) 一つのトランザクション中で,対象の表のある行を2回以上参照する場合,1回目の読込みの列値と2回目以降の読込みの列値が同じであることが保証されない。

出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9

正解:ア

解説

トランザクションの隔離性水準のうち,READ COMMITTEDは,他のトランザクションがコミットしていない(確定していない)更新結果を読まないため,ダーティリードは回避できる。一方,同一トランザクション内で同じ行を2回以上読み込む間に,他のトランザクションが当該行を更新してコミットすることを妨げないため,1回目と2回目以降の読込みで異なる値を得ること(反復不能読取り,non-repeatable read)が起こり得る。したがって,設問の(1)(ダーティリードは回避できる)と(2)(同じ行を2回読んでも値が同じであることは保証されない)の両方に該当するのは,READ COMMITTEDである。

選択肢ごとの解説

  • 正しい。READ COMMITTEDは,コミット済みのデータだけを読むためダーティリードを回避できるが,同一トランザクション内で同じ行を複数回読み込む間の値の一致(反復可能読取り)までは保証しない。
  • 誤り。READ UNCOMMITTEDは,他のトランザクションの未コミットの更新結果も読んでしまうため,(1)のダーティリードを回避できるという条件を満たさない。
  • 誤り。REPEATABLE READは,ダーティリードを回避できることに加えて,同一トランザクション内で同じ行を2回以上読み込んだ場合に,その値が変わらないこと(反復可能読取り)も保証するため,(2)の条件(値の一致が保証されない)を満たさない。
  • 誤り。SERIALIZABLEは,隔離性水準の中で最も厳格であり,ダーティリードだけでなく反復不能読取りやファントムリードも防止するため,(2)の条件(値の一致が保証されない)を満たさない。
データベーススペシャリストの過去問を演習モードで解く