データベース応用問題

データベースにおいて、トランザクションAが行Xをロックして更新処理中に、別のトランザクションBが同じ行Xの読み取りを要求した。データベースの分離レベルが「READ COMMITTED」に設定されている場合、トランザクションBはどのような結果を得るか。

A.トランザクションAがコミットまたはロールバックするまで待機し、完了後にコミット済みの値を読み取る← 正解
✓ 正解です。READ COMMITTEDでは未コミットデータの読み取りを防ぎ、Aの完了を待ってからコミット済みの値を返します。
B.トランザクションAによる更新途中の未コミットの値をそのまま読み取る
✗ 未コミットデータを読む「ダーティリード」はREAD UNCOMMITTEDでのみ発生します。READ COMMITTEDでは防がれます。
C.デッドロックが発生し、両方のトランザクションがロールバックされる
✗ デッドロックは互いが相手のロック待ちになる状況で発生します。この設問では一方向の待機なので該当しません。
D.トランザクションBはエラーとなり、即座に処理が中断される
✗ READ COMMITTEDでは読み取り要求がエラーになることはなく、待機後に適切な値が返されます。

基本情報技術者試験 の問題一覧