平成31年度 春期 午前Ⅱ 問9
トランザクション処理
隔離性水準に関する問題
トランザクションの隔離性水準のうち,次の(1),(2)に該当するSQLの指定はどれか。
(1) 対象の表のダーティリードは回避できる。
(2) 一つのトランザクション中で,対象の表のある行を2回以上参照する場合,1回目の読込みの列値と2回目以降の読込みの列値が同じであることが保証されない。
- アREAD COMMITTED
- イREAD UNCOMMITTED
- ウREPEATABLE READ
- エSERIALIZABLE
答えと解説を見る
✓ これが正解アREAD COMMITTED
解説
READ COMMITTEDはダーティリードを防ぎ、読み直しの値は保証しません。
隔離性水準は、防げる現象の範囲で並べると整理できます。(1)のダーティリードは、他のトランザクションがまだコミットしていない更新を読んでしまう現象です。(2)は、同じ行を2回読む間に他のトランザクションが更新してコミットすると値が変わり得る、という条件です。コミット済みのデータだけを読むREAD COMMITTEDは、ダーティリードを防ぎますが、1回目と2回目の読込みの間に他のトランザクションがコミットした更新は見えるので、同じ値である保証はありません。二つの条件にちょうど合うのはこの水準です。ダーティリードを許す、防ぐ、読み直しの値も守る、全てを逐次実行と同等にする、と一段ずつ強くなると覚えると判断しやすくなります。
ほかの選択肢はなぜ違うのか
- イREAD UNCOMMITTED:READ UNCOMMITTEDは最も低い水準で、他のトランザクションがまだコミットしていない更新も読めてしまいます。ダーティリードを回避できるという(1)の条件を満たしません。
- ウREPEATABLE READ:REPEATABLE READは、一度読んだ行の値が同じトランザクションの中で変わらないことを保証する水準です。(2)は値が同じである保証がないという条件なので、保証してしまうこの水準は当てはまりません。
- エSERIALIZABLE:SERIALIZABLEは最も高い水準で、同時に動く複数のトランザクションが一つずつ順に動いた場合と同じ結果になることを求めます。同じ行の読み直しで値が変わることは起きないので、(2)の条件に合いません。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問14:べき等に関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問12:ロールフォワードに関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)