ホーム > データベーススペシャリスト試験 > 2024年
データベーススペシャリスト試験 2024年 午前2 問15
トランザクションT1とT2の並行実行における不整合検索異状(inconsistent retrieval anomaly)の説明はどれか。
ア:T1がxを更新した後コミットする前に, T2もxを更新すること
イ:T1とT2が同時にデータxを読み, T1はxを更新する。T2は更新前のxの値に基づいてデータyを更新することによって, yの値がxの値に基づかなくなること(正解)
ウ:先行するT1が更新したデータxを, 後続のT2が読んで処理を行うとき, T1がロールバックすると, T2もロールバックしなければならなくなること
エ:先行するT1が更新したデータxを, 後続のT2が読んで処理を行った後に, T1がロールバックすることによって, T2は結果的に誤った処理になること
解説
トランザクションT1とT2の並行実行における不整合検索異状(inconsistent retrieval anomaly)の説明【午前2 解説】
要点まとめ
- 結論:不整合検索異状は、同時に読み取ったデータの一貫性が保たれず、更新前後の値が混在する状態です。
- 根拠:T1とT2が同じデータxを同時に読み取り、T1が更新した後にT2が古い値に基づいて別のデータyを更新することで発生します。
- 差がつくポイント:更新前後の値を混在させて処理することが不整合検索異状の本質であり、単なる更新競合やロールバックとは異なります。
正解の理由
選択肢イは、不整合検索異状の典型的な例を示しています。T1とT2が同時にデータxを読み取り、T1がxを更新した後、T2は更新前のxの値に基づいて別のデータyを更新します。この結果、yの値がxの最新の値と整合しなくなり、データの一貫性が失われます。これが不整合検索異状の定義に合致します。
よくある誤解
不整合検索異状は単なる更新競合やロールバックの問題と混同されやすいですが、実際には同時に読み取ったデータの不整合が原因です。
解法ステップ
- 不整合検索異状の定義を確認する(同時に読み取ったデータの不整合)。
- 各選択肢が示す状況を「読み取り」「更新」「コミット」「ロールバック」の観点で分析する。
- 同時に読み取ったデータの値が異なる状態で更新が行われているかを判断する。
- 不整合検索異状の条件に合致する選択肢を選ぶ。
選択肢別の誤答解説
- ア: T1がxを更新後コミット前にT2もxを更新するのは競合状態であり、不整合検索異状とは異なります。
- イ: 同時にxを読み、T1が更新後、T2が古い値に基づきyを更新するため不整合検索異状です。
- ウ: T1のロールバックによりT2もロールバックが必要になるのは「カスケードロールバック」の説明であり、不整合検索異状ではありません。
- エ: T1のロールバック後にT2が誤った処理になるのは「ダーティリード」の問題に近く、不整合検索異状とは異なります。
補足コラム
不整合検索異状は、データベースのトランザクション分離レベルの「リピータブルリード」や「シリアライザビリティ」で防止されます。これらの分離レベルは、同時実行性を保ちつつデータの一貫性を保証するために重要です。
FAQ
Q: 不整合検索異状はどの分離レベルで防げますか?
A: 主に「リピータブルリード」以上の分離レベルで防止可能です。
A: 主に「リピータブルリード」以上の分離レベルで防止可能です。
Q: 不整合検索異状とダーティリードの違いは何ですか?
A: 不整合検索異状は同時に読み取った複数のデータの不整合、ダーティリードは未コミットの更新データの読み取りです。
A: 不整合検索異状は同時に読み取った複数のデータの不整合、ダーティリードは未コミットの更新データの読み取りです。
関連キーワード: トランザクション, 不整合検索異状, 並行実行制御, データベース, 分離レベル, リピータブルリード, シリアライザビリティ