令和4年度 秋期 午前Ⅱ 問14
トランザクション処理
隔離性水準に関する問題
トランザクション T_1 がある行 X を読んだ後,別のトランザクション T_2 が行 X の値を更新してコミットし,再び T_1 が行 X を読むと,以前読んだ値と異なる値が得られた。この現象を回避する SQL の隔離性水準のうち,最も水準の低いものはどれか。
- アREAD COMMITTED
- イREAD UNCOMMITTED
- ウREPEATABLE READ
- エSERIALIZABLE
答えと解説を見る
✓ これが正解ウREPEATABLE READ
解説
読み直しで値が変わるのを防ぐ最低の水準は REPEATABLE READ です。
設問の現象は、T_1 が同じ行 X を2回読む間に、T_2 が行 X を更新してコミットしたため、1回目と2回目で異なる値が得られたというものです。コミット済みの値を読んでいるので、コミット前のデータを読むダーティリードではありません。同じ行の読み直しで値が変わる現象を防ぐ水準は REPEATABLE READ で、一度読んだ行を同じトランザクションの中で読み直したとき、同じ値が返ることが保証されます。SERIALIZABLE でも防げますが、最も低い水準を問われているので REPEATABLE READ が答えです。隔離性水準を低い順に並べ、現象を初めて防げる位置を探すと答えが一つに決まります。
ほかの選択肢はなぜ違うのか
- アREAD COMMITTED:READ COMMITTED は、コミットされたデータだけを読ませる水準です。T_2 の更新はコミット済みなので、T_1 が2回目に読むと新しい値が見え、設問の現象を防ぐことはできません。
- イREAD UNCOMMITTED:READ UNCOMMITTED は最も低い水準で、コミット前のデータさえ読めてしまいます。同じ行を読み直したときに値が変わることも当然防げないので、この現象を回避する水準には入りません。
- エSERIALIZABLE:SERIALIZABLE は最も高い水準で、設問の現象も防げます。ただし、より低い REPEATABLE READ で既に防げるため、最も水準の低いものという問いの答えにはなりません。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問14:べき等に関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問12:ロールフォワードに関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)