IPA公式正解:ア READ COMMITTED
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【ア】です。READ COMMITTED(コミット読取り)は、コミット済みのデータのみを読み取るためダーティリードは回避できますが、同一トランザクション内で再読込みを行うと他者がコミットした変更が反映されるため、ファジーリード(ノンリピータブルリード)が発生します。
【詳細解説】■ 本問の核心・解法のポイント
トランザクションの隔離性水準(アイソレーションレベル)と発生しうる読み取り現象(ダーティリード、ノンリピータブルリード/ファジーリード、ファントムリード)の対応関係を正確に把握しているかが問われます。
各隔離性水準で許容される現象:
・READ UNCOMMITTED:ダーティリード、ノンリピータブルリード、ファントムリードのすべてが発生しうる。
・READ COMMITTED:ダーティリードは回避できる。しかし同一行の再読込みで値が変わるノンリピータブルリードは発生しうる。
・REPEATABLE READ:ダーティリードおよびノンリピータブルリードを回避できる。同一行の値は保証されるが、新たな行が出現するファントムリードは発生しうる。
・SERIALIZABLE:すべての読み取り異常が完全に回避される。
条件(1)よりダーティリードは回避でき、条件(2)よりノンリピータブルリードが防止されない(1回目と2回目で同じ値が保証されない)水準を指しているため、READ COMMITTEDが該当します。
・各選択肢の徹底解説:
・ア:【選択肢ア★】READ COMMITTEDはダーティリードを回避し、かつ同一行の再読込みによる値の同一性は保証されないため、記述(1)(2)に完全に合致します。
・イ:READ UNCOMMITTEDはコミットされていない変更も読み取ってしまうため、ダーティリードが発生します。
・ウ:REPEATABLE READは同一トランザクション内で同じ行を読み込んだ場合、常に同じ値が得られることが保証されます。
・エ:SERIALIZABLEはトランザクションを直列実行した場合と同じ結果を保証するため、同一行の値も当然保証されます。
よって正解はアです。