平成30年度 春期 データベーススペシャリスト試験 午前II 問14
【問題14】
厳格な2相ロッキングプロトコルと表ロックを適用して,同時実行している他のトランザクションの処理結果に影響を与えないようにする。実現されるトランザクションの隔離性水準はどれか。
【解説】
トランザクションの隔離性水準は、データベースの一貫性を維持するために設定される制約の強さを表します。以下は主な隔離性水準とその特徴です:
READ UNCOMMITTED
データの読み取り時にコミットされていない変更を参照可能です。他のトランザクションによる未確定のデータが読み取れるため、「ダーティリード」が発生します。
READ COMMITTED
データの読み取り時には、必ず他のトランザクションがコミットしたデータのみを参照します。ただし、同じトランザクション内で再読み取りを行うと異なる値になる可能性があり、「非再現読み取り」が発生します。
REPEATABLE READ
トランザクション内で同じクエリを複数回実行しても、読み取り結果が変わらないことが保証されます。ただし、新しい行の挿入が影響を与える「ファントムリード」は防げません。
SERIALIZABLE
トランザクションが直列実行された場合と同じ結果が得られる最も厳しい隔離性水準です。「ダーティリード」「非再現読み取り」「ファントムリード」のすべてが防止されます。厳格な2相ロッキングプロトコルと表ロックの適用は、この隔離性水準を実現します。
ア: READ UNCOMMITTED
誤り。コミットされていないデータを読み取るため、最も低い隔離性水準です。
イ: READ COMMITTED
誤り。コミット済みデータのみを参照しますが、再現読み取りやファントムリードは防げません。
ウ: REPEATABLE READ
誤り。再現読み取りは保証しますが、ファントムリードは防げません。
エ: SERIALIZABLE
正しい。厳格な2相ロッキングプロトコルと表ロックを適用することで、直列実行と同じ結果を保証するこの隔離性水準が実現されます。
出典:平成30年度 春期 データベーススペシャリスト試験 午前II 問14