平成24年度 春期 午前Ⅱ 問15
トランザクション処理
隔離性水準に関する問題
SQL でトランザクションの隔離性水準を READ COMMITTED に指定したときに発生する状態はどれか。
- アダーティリードとアンリピータブルリードとファントムリードが発生する。
- イダーティリードとアンリピータブルリードは発生しないが,ファントムリードが発生する。
- ウダーティリードは発生しないが,アンリピータブルリードとファントムリードが発生する。
- エダーティリードもアンリピータブルリードもファントムリードも発生しない。
答えと解説を見る
✓ これが正解ウダーティリードは発生しないが,アンリピータブルリードとファントムリードが発生する。
解説
ダーティリードだけが防がれ、残りの二つは起こり得ます。
SQL の隔離性水準は四つあり、水準が上がるほど起こり得る現象が減ります。READ COMMITTED は、コミット済みのデータだけを読む水準なので、他のトランザクションの未コミットの値を読むダーティリードは起きません。しかし、同じ行を読み直す間に他のトランザクションが更新してコミットすれば値が変わるアンリピータブルリードや、同じ条件で読み直す間に行が挿入されて増えるファントムリードは防げません。名前のとおり、コミット済みかどうかだけを保証する水準だと押さえると、残る現象が分かります。四つの水準を、防げる現象が一つずつ増えていく階段として並べておくと、どの水準で何が残るかを順に引けます。
ほかの選択肢はなぜ違うのか
- アダーティリードとアンリピータブルリードと…:三つの現象がすべて起こり得るのは、未コミットの値まで読む最も緩い水準です。READ COMMITTED はコミット済みのデータだけを読むので、ダーティリードは防がれます。
- イダーティリードとアンリピータブルリードは…:ダーティリードとアンリピータブルリードは起きず、ファントムリードだけが起こり得るのは、READ COMMITTED より一段厳しい水準の性質です。READ COMMITTED では読み直した値の変化は防げません。
- エダーティリードもアンリピータブルリードも…:どの現象も起きないのは、最も厳しい水準です。READ COMMITTED はコミット済みの値を読むことしか保証しないので、読み直しの間の更新や挿入の影響を受けます。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問15:隔離性水準に関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問14:べき等に関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)