令和4年度 春期 午前Ⅱ 問24
データベース
共有ロックに関する問題
t1~t10 の時刻でスケジュールされたトランザクション T1~T4 がある。時刻 t10 で T1 が commit を発行する直前の,トランザクションの待ちグラフを作成した。a に当てはまるトランザクションはどれか。ここで,select (X) は共有ロックを掛けて資源 X を参照することを表し,update (X) は専有ロックを掛けて資源 X を更新することを表す。これらのロックは,commit された時にアンロックされるものとする。また,トランザクションの待ちグラフの矢印は,Ti→Tj としたとき,Tj がロックしている資源のアンロックを,Ti が待つことを表す。
〔トランザクションのスケジュール〕
| 時刻 | T1 | T2 | T3 | T4 |
|---|---|---|---|---|
| t1 | select (A) | − | − | − |
| t2 | − | select (B) | − | − |
| t3 | − | − | select (B) | − |
| t4 | − | − | − | select (A) |
| t5 | − | − | − | update (B) |
| t6 | select (C) | − | − | − |
| t7 | − | select (C) | − | − |
| t8 | − | update (C) | − | − |
| t9 | − | − | update (A) | − |
| t10 | commit | − | − | − |
(原典では T1~T4 の列の上に「トランザクション」の見出しがある。)
〔トランザクションの待ちグラフ〕:
b → a a → d b → c c → b c → d
- アT1
- イT2
- ウT3
- エT4
答えと解説を見る
✓ これが正解イT2
解説
待ちの関係を書き出すと、a に当たるのは T2 です。
見分ける軸は、t10 の直前に誰がどの資源のアンロックを待っているかです。t5 で T4 が B を更新しようとしますが、B は T2 と T3 が共有ロック中なので T4→T2 と T4→T3 が生じます。t8 で T2 が C を更新しようとしますが、C は T1 が共有ロック中なので T2→T1 です。t9 で T3 が A を更新しようとしますが、A は T1 と T4 が共有ロック中なので T3→T1 と T3→T4 です。何も待たない T1 は出ていく矢印のない d です。互いに矢印を出し合う b と c は T3 と T4 で、b→a があることから b が T4、c が T3、a が T2 と決まります。矢印の出入りを手掛かりに当てはめると解けます。
ほかの選択肢はなぜ違うのか
- アT1:T1 は t10 で commit を発行する直前まで、どの資源も待っていません。待ちグラフでは出ていく矢印を持たないノードになるので d に当たり、a→d という矢印を出している a には当てはまりません。
- ウT3:T3 は t9 で A の専有ロックを求め、A を共有ロック中の T1 と T4 を待ちます。T4 との間で互いに待ち合うデッドロックの関係になるので、相互の矢印を持つ b と c のどちらかであり、a ではありません。
- エT4:T4 は t5 で B の専有ロックを求め、B を共有ロック中の T2 と T3 を待ちます。T3 と互いに待ち合う関係にあり、さらに a へ向かう矢印を持つ b に当たるので、a ではありません。
この問題の用語
- スケジュール作業の順序と日程を決めた計画のことをいいます。作業の前後関係から日程を組み立てるには、PERTが向いています。
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問24
同じ用語が出る問題
- 令和7年度 春期 午前Ⅱ 問24:隔離性水準に関する問題(トランザクション)
- 令和6年度 春期 午前Ⅱ 問24:デッドロックに関する問題(トランザクション)
- 令和4年度 春期 午前Ⅱ 問9:バグ管理図に関する問題(スケジュール)
- 令和元年度 秋期 午前Ⅱ 問11:バグ管理図に関する問題(スケジュール)
- 平成28年度 秋期 午前Ⅱ 問6:構造化分析に関する問題(スケジュール)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)