過去問解きまくり研究所 ホーム

平成29年度 春期 午前Ⅱ 問17

トランザクション処理

隔離性水準に関する問題

図は,ある探索条件を使って数学模試の平均点を算出している間,当該探索条件に合致するA君の結果を“数学模試成績”表に登録したときの様子を示している。平均点を求めるトランザクションT_1と,登録作業のトランザクションT_2が①~⑥の順序で処理された結果,合計点算出時の受験者数と平均点算出時の受験者数が異なり,正しい平均点を得ることができなかった。このとき発生した事象はどれか。ここで,トランザクションの隔離性水準はREAD UNCOMMITTEDであったとする。

処理の順序(原典は図。時刻は上から下へ進む。左列がトランザクションT_1,右列がトランザクションT_2):

トランザクションT_1                              トランザクションT_2

① “数学模試成績”表の登録済データから,
   合計点Xを算出
        │
        │                                       ② A君の結果を“数学模試成績”表に登録
        │                                                 ↓
        │                                       ③ COMMIT
        ↓
④ “数学模試成績”表の登録済データから,
   受験者数Yを算出
        ↓
⑤ XをYで除算し,数学模試の平均点を算出
        ↓
⑥ COMMIT
答えと解説を見る

✓ これが正解エファントムリード

解説

同じ条件で読み直すと、他が登録した行が加わって見える現象です。

見分ける軸は、T_2がした操作が新しい行の登録か既存行の更新か、そしてその変更がコミット済みかどうかです。T_1は①で、ある探索条件に合う行から合計点を求めます。その後、T_2が②で同じ探索条件に合うA君の行を登録し、③でコミットします。T_1が④で同じ条件の行から受験者数を数えると、①のときにはなかったA君の行が加わっています。同じ条件で読んだ行の集まりに、他のトランザクションが登録した行が現れるこの現象がファントムリードです。そのため合計点と受験者数の対象がずれ、正しい平均点になりませんでした。新しく現れた行ならファントム、と覚えると区別できます。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問17

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)