ホーム > データベーススペシャリスト試験 > 2021年
データベーススペシャリスト試験 2021年 午前2 問07
次の(1)(2)該当するトランザクションの隔離性水準はどれか。
(1)対象の表のダーティリードは回避できる。
(2)一つのトランザクション中で対象の表のある行を2回以上参照する場合1回目の読込みの列値と2回目以降の読込みの列値が同じであることが保証されない。
ア:READ COMMITTED(正解)
イ:READ UNCOMMITTED
ウ:REPEATABLE READ
エ:SERIALIZABLE
解説
トランザクションの隔離性水準問題【午前2 解説】
要点まとめ
- 結論:問題文の条件を満たす隔離性水準はREAD COMMITTEDです。
- 根拠:ダーティリードを防止しつつ、同一トランザクション内での繰り返し読み込みが同一値である保証はありません。
- 差がつくポイント:ダーティリードの有無と繰り返し読み込みの値の一貫性の違いを正確に理解することが重要です。
正解の理由
(1)「ダーティリードは回避できる」ため、READ UNCOMMITTEDは除外されます。
(2)「同一トランザクション内での繰り返し読み込みの値が同じである保証がない」ため、REPEATABLE READやSERIALIZABLEは除外されます。
これらの条件を満たすのはREAD COMMITTEDのみであり、これが正解です。
(2)「同一トランザクション内での繰り返し読み込みの値が同じである保証がない」ため、REPEATABLE READやSERIALIZABLEは除外されます。
これらの条件を満たすのはREAD COMMITTEDのみであり、これが正解です。
よくある誤解
READ COMMITTEDは「繰り返し読み込みの値が変わる可能性がある」ことを理解せず、REPEATABLE READと混同しやすいです。
解法ステップ
- ダーティリードとは何かを確認する(未コミットの変更を読むこと)。
- 各隔離レベルの特徴を整理する。
- (1)の条件でREAD UNCOMMITTEDを除外。
- (2)の条件でREPEATABLE READとSERIALIZABLEを除外。
- 残ったREAD COMMITTEDが正解と判断する。
選択肢別の誤答解説
- ア: READ COMMITTED
ダーティリードを防止し、繰り返し読み込みの値が変わる可能性があるため正解。 - イ: READ UNCOMMITTED
ダーティリードを許すため(1)の条件に合わない。 - ウ: REPEATABLE READ
同一トランザクション内で繰り返し読み込みの値が変わらないため(2)の条件に合わない。 - エ: SERIALIZABLE
最も高い隔離レベルであり、(2)の条件に合わない。
補足コラム
トランザクションの隔離性水準はANSI/ISO SQL標準で定義され、主に4段階あります。
- READ UNCOMMITTED:最も低く、ダーティリードを許す。
- READ COMMITTED:ダーティリードを防止するが、ノンリピータブルリードは許す。
- REPEATABLE READ:繰り返し読み込みの値を保証し、ファントムリードは許す場合もある。
- SERIALIZABLE:最も高く、すべての不整合を防止。
FAQ
Q: ダーティリードとは何ですか?
A: 他のトランザクションがまだコミットしていない変更を読み込むことです。
A: 他のトランザクションがまだコミットしていない変更を読み込むことです。
Q: READ COMMITTEDで繰り返し読み込みの値が変わるのはなぜですか?
A: 他のトランザクションがコミットした変更を読み込むため、同じ行の値が変わる可能性があります。
A: 他のトランザクションがコミットした変更を読み込むため、同じ行の値が変わる可能性があります。
Q: SERIALIZABLEはどんな場合に使いますか?
A: 完全な整合性が必要な場合に使い、同時実行性は低下します。
A: 完全な整合性が必要な場合に使い、同時実行性は低下します。
関連キーワード: トランザクション, 隔離性水準, ダーティリード, READ COMMITTED, REPEATABLE READ, SERIALIZABLE