HOME»データベーススペシャリスト令和7年秋期»午前Ⅱ 問15
データベーススペシャリスト令和7年秋期 午前Ⅱ 問15
問15
トランザクションT1,T2を同時実行した際に,次の異状を防ぐことができるトランザクションの隔離性水準のうち,最も水準の低いものはどれか。
〔異状〕
T1が同じデータを複数回読み込んでいる途中で,T2がそのデータを更新してコミットしたことによって,T1が更新していないのにもかかわらずT1が読み込むデータが変わってしまう。
〔異状〕
T1が同じデータを複数回読み込んでいる途中で,T2がそのデータを更新してコミットしたことによって,T1が更新していないのにもかかわらずT1が読み込むデータが変わってしまう。
- READ COMMITTED
- READ UNCOMMITTED
- REPEATABLE READ
- SERIALIZABLE
- [出題歴]
- データベース R4秋期 問14
分類
テクノロジ系 » データベース » トランザクション処理
正解
ウ
解説
隔離性水準とは、トランザクションに指定できる直列化制約の度合いで、隔離性の低い順に、①READ UNCOMMITTED、②READ COMMITTED、③REPEATABLE READ、④SERIALIZABLEの4種類があります。これらはSQLの"SET TRANSACTION"文に記述され、トランザクションを同時実行したことで発生する異常のうち、どのレベルまでを許容するかを指定します。
厳密なロックプロトコルに従えば、トランザクションの直列化可能性は保証されますが、それと引き換えに処理効率は悪くなります。このため、一定の異常を許容して処理効率を高めるオプションとして隔離性水準が用意されています。隔離性水準の中で最も高い安全性を提供するのは「SERIALIZABLE」ですが、多くのDBMSでは標準設定として「READ COMMITTED」が採用されています。
トランザクションの同時実行が原因で生じる3つの異常と、隔離性水準ごとの許容レベルをまとめると次のようになります。
設問の現象はノンリピータブルリードと呼ばれる異常で、回避するには「REPEATABLE READ」または「SERIALIZABLE」を指定する必要があります。したがって、より隔離性水準が低い「REPEATABLE READ」が正解となります。
厳密なロックプロトコルに従えば、トランザクションの直列化可能性は保証されますが、それと引き換えに処理効率は悪くなります。このため、一定の異常を許容して処理効率を高めるオプションとして隔離性水準が用意されています。隔離性水準の中で最も高い安全性を提供するのは「SERIALIZABLE」ですが、多くのDBMSでは標準設定として「READ COMMITTED」が採用されています。
トランザクションの同時実行が原因で生じる3つの異常と、隔離性水準ごとの許容レベルをまとめると次のようになります。
- ダーティリード
- 他のトランザクションが更新したコミット前の値(ダーティデータ)を読み、その後更新処理を行ったトランザクションがロールバックされると、存在しない値を読み込んだことになってしまう異常
- ノンリピータブルリード/ファジーリード
- 同じトランザクションで複数回の読込みを行ったとき、読込む度に値が変わってしまう異常。2回の読込みの間に、別のトランザクションがそのデータを更新したことが原因で発生する
- ファントムリード
- 同じトランザクションで複数回の読込みを行ったとき、前回は存在しなかった行が現れる異常。2回の読込みの間に、別のトランザクションがテーブルに行を挿入したことが原因で発生する

