令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7
テクノロジ/データベース次の (1), (2) に該当するトランザクションの隔離性水準はどれか。 (1) 対象の表のダーティリードは回避できる。 (2) 一つのトランザクション中で,対象の表のある行を 2 回以上参照する場合,1 回目の読込みの列値と 2 回目以降の読込みの列値が同じであることが保証されない。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7
- アREAD COMMITTED
- イREAD UNCOMMITTED
- ウREPEATABLE READ
- エSERIALIZABLE
正解:ア
解説
ダーティリード(コミット前のデータを読んでしまう現象)はREAD UNCOMMITTEDでのみ発生し得る現象であり,READ COMMITTED以上の水準では回避されます。一方,同一トランザクション内で同じ行を複数回読み込んだときに1回目と2回目以降とで値が変わってしまう非再現読取り(non-repeatable read)は,READ COMMITTEDでは防げず,REPEATABLE READ以上の水準で初めて防げます。設問の(1)(2)を同時に満たす,すなわちダーティリードは回避できるが非再現読取りは防げない,最も水準の低いものはREAD COMMITTEDです。
選択肢ごとの解説
- ア正しい。READ COMMITTEDはコミット済みデータのみを読むためダーティリードを回避できますが,同一トランザクション内での再読込みで値が変わらないことまでは保証しません。
- イ誤り。READ UNCOMMITTEDはコミット前のデータも読めてしまうため,ダーティリードを回避できません。
- ウ誤り。REPEATABLE READは同一行の再読込みでも値が変わらないことを保証する水準であり,(2)の「保証されない」という記述と矛盾します。
- エ誤り。SERIALIZABLEは最も厳密な隔離性水準であり,ダーティリードだけでなく非再現読取りも防止するため,(2)の現象が起こり得る設問の条件には合いません。