IPA公式正解:ア READ COMMITTED
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【ア】です。SQL標準のトランザクション分離レベル(隔離性水準)において、READ COMMITTED(コミット読込み)はコミット済みのデータのみを読み取るためダーティリードを回避できます。しかし、同一行の再読込み時に他トランザクションによる更新がコミットされると値が変化するファジーリード(非再現リード)が発生します。
【詳細解説】■ 本問の核心・解法のポイント
SQLの標準トランザクション分離レベル(ANSI/ISO SQL)と、発生しうる現象(ダーティリード、ファジーリード/非再現リード、ファントムリード)の対応関係を問う定番問題です。
各分離レベルで防止できる現象:
・READ UNCOMMITTED:未コミットの更新データも読めるため、ダーティリードが発生。
・READ COMMITTED:コミットされたデータのみ読めるため、ダーティリードは防止。ただし同一行の再読込みで値が変わる非再現リードは発生。
・REPEATABLE READ:同一トランザクション内での同一行の再読込みで常に同じ値が保証される(非再現リードを防止)。ただし範囲検索で新たな行が出現するファントムリードが発生しうる。
・SERIALIZABLE:すべての並行処理障害を防止。
・各選択肢の徹底解説:
・ア:【選択肢ア★】READ COMMITTED は、コミット済みのデータのみを読み取るためダーティリードを回避できます(1)。一方で、別トランザクションがコミットした更新を読み取ってしまうため、同一トランザクション内で同じ行を再読込みした際に値が変わる可能性があり、列値が同じであることは保証されません(2)。
・イ:READ UNCOMMITTED は、コミットされていない変更データも読み取ってしまうため、ダーティリードを回避できません。
・ウ:REPEATABLE READ は、同一トランザクション内で同じ行を何度読み込んでも同じ列値が返ることが保証されるため、条件(2)に反します。
・エ:SERIALIZABLE は最も厳密な分離レベルであり、非再現リードもファントムリードも完全に防止されるため、条件(2)に反します。
よって正解はアです。