DBデータベーススペシャリスト試験 午前Ⅱ
平成29年度春期 データベーススペシャリスト 午前Ⅱ 問17
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- アアンリピータブルリード
- イシーケンシャルリード
- ウダーティリード
- エファントムリード
解き方のヒントを見る
トランザクション境界の見極め
処理のまとまりと整合性がどの時点で関係するかに注目し、開始から終了までの状態変化を時系列で整理して、各選択肢の前提や結果の範囲を比較しましょう。途中状態と完了後の状態を混同しないことが大切です。
この問題で問われていること
確認の中心を、トランザクションの境界がどこに置かれているかという一点に絞り、処理の前後で整合性を判断する対象と、途中経過として扱う対象を区別して読み取りましょう。
視点
一連の処理を開始前・実行中・終了後に分け、それぞれでどの状態を観察しているのかを整理します。境界の置き方と、整合性を確認する時点の対応関係を意識してください。
確認ポイント
- 処理の開始点と終了点を確認する
- 途中経過と完了後の状態を区別する
- 整合性を判断する時点を整理する
正解と解説を見る
正解
エ
解説
T1は合計点を求めた後、同じ探索条件に合う受験者数を読み取っています。その間にT2がA君の結果を登録してコミットしたため、後の読み取りでは新しい対象行が加わり、合計点算出時と受験者数算出時の対象集合が異なりました。これはファントムリードです。
理由
①でT1が既存データから合計点Xを算出した後、T2が②でA君の結果を登録し、③でコミットしています。その後、T1が④で受験者数Yを算出するため、検索条件に合う行が増えた状態を読み取ります。したがってXとYは同じ対象集合に基づく値ではなく、正しい平均点になりません。
比較
アンリピータブルリードは同じ既存行を再読した際に値が変わる現象、ダーティリードは未コミットの変更を読む現象です。シーケンシャルリードはこの設問の事象を表す選択肢ではありません。今回は既存行の値ではなく、検索結果に新しい行が現れています。
選択肢ア
これは不正解だよ。アンリピータブルリードは、同じ行を複数回読み取ったとき、他のトランザクションによる更新や削除によってその行の値が変わる現象です。この図では、既存行の値を再読しているのではなく、検索条件に合う新しい受験者の行が追加されています。
選択肢イ
これは不正解だよ。シーケンシャルリードは、データを順番に読み取る処理を示す一般的な表現であり、設問のように同じ検索条件の結果へ新しい行が現れる異常現象の名称ではありません。T1とT2の処理順序から、対象行集合の変化を判断します。
選択肢ウ
これは不正解だよ。ダーティリードは、別のトランザクションがまだコミットしていない変更を読み取る現象です。図ではT2がA君の結果を登録した後に③でCOMMITしており、T1が受験者数を読む時点では新しい行がコミット済みになっています。
選択肢エ(正解)
これは正解だよ。ファントムリードは、同じ検索条件で再度読み取ったとき、別トランザクションの行追加や削除によって結果集合の行数が変わる現象です。T2の登録とコミット後、T1の受験者数算出で新しい対象行が加わるため、該当します。
学習のポイント
同じ条件の再読で、新しい行が出現する現象を理解する
出典:独立行政法人 情報処理推進機構(IPA)平成29年度春期 データベーススペシャリスト試験 午前Ⅱ 問17(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針