データベーススペシャリスト試験 令和4年度 秋期 午前II 問14
トランザクションT₁がある行Xを読んだ後、別のトランザクションT₂が行Xの値を更新してコミットし、再びT₁が行Xを読むと、以前読んだ値と異なる値が得られた。この現象を回避するSQLの隔離性水準のうち、最も水準の低いものはどれか。
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ウ
同じトランザクションが同じ行を二度読んだとき、途中で別のトランザクションがその行を更新してコミットしたために、二度目の値が変わる現象を非再現読取り、又はノンリピータブルリードといいます。REPEATABLE READは、トランザクション内で一度読み取った行を再び読んでも同じ値が得られることを保証する隔離性水準です。この現象を防止できる水準のうち、SERIALIZABLEより低い水準なので、ウが正解です。
アのREAD COMMITTEDは誤りです。他のトランザクションがコミットしていない値を読むダーティリードは防ぎますが、読取り後に他のトランザクションが更新してコミットすることは許されます。そのため、非再現読取りが発生し得ます。
イのREAD UNCOMMITTEDは誤りです。最も低い隔離性水準であり、非再現読取りだけでなく、未コミットの値を読むダーティリードも発生し得ます。
エのSERIALIZABLEでも非再現読取りを防止できますが、誤りです。SERIALIZABLEは、並行実行の結果を直列実行と同等にする最も高い隔離性水準です。設問は現象を回避できる最も低い水準を求めているため、より低いREPEATABLE READを選びます。
【ポイント】 隔離性水準は、READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEの順に高くなります。 非再現読取りは同じ行の値が変わる現象です。検索条件に合う行数が変わるファントムリードと区別します。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前II 問14
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる