平成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君の行が加わっています。同じ条件で読んだ行の集まりに、他のトランザクションが登録した行が現れるこの現象がファントムリードです。そのため合計点と受験者数の対象がずれ、正しい平均点になりませんでした。新しく現れた行ならファントム、と覚えると区別できます。
ほかの選択肢はなぜ違うのか
- アアンリピータブルリード:アンリピータブルリードは、一度読んだ同じ行を読み直したとき、他のトランザクションの更新で値が変わっている現象です。この図では既存の行は変わらず、新しい行が登録されています。
- イシーケンシャルリード:シーケンシャルリードは、データを先頭から順に読む読み方を指す語です。二つのトランザクションの実行が重なって起こる不整合の名前ではないので、この図の事象にはあてはまりません。
- ウダーティリード:ダーティリードは、他のトランザクションがまだコミットしていないデータを読む現象です。この図ではT_2が③でコミットした後に④で読んでいるので、未確定のデータは読んでいません。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
- 作業工程を組み立てる、一つひとつの仕事の単位のことです。開始と終了、所要日数をもち、順序をつないで全体の日程を作ります。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問17
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問15:隔離性水準に関する問題(トランザクション)
- 平成25年度 春期 午前Ⅱ 問14:ロールフォワードに関する問題(作業)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)