平成29年度 高度共通 午前I(PM試験) 問8

分野:データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計)|実際に出題されたIPA過去問題

トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の ① ~ ⑧ は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  ③
  2.  ④
  3.  ⑤
  4.  ⑥
解答・解説を見る

正解:エ

AI解説

正解はエ。デッドロックは、2つのトランザクションが互いに相手がロック中の資源の解放を待ち合い、どちらも進めなくなる状態である。トランザクションAがテーブルa→bの順、Bがテーブルb→aの順でロックを取得していくため、⑥の時点で互いに相手の保持するテーブルのロック解放を待つ状態となりデッドロックが成立する。 ア: ③の時点では、まだ一方のトランザクションしか相手の資源を要求しておらず、待ちは発生しても相互の待ち合いにはなっていない。 イ: ④の時点でも両者が相互に待ち合う関係は完成しておらず、処理は継続できる。 ウ: ⑤の時点では一方が相手のロック解放を待つ片方向の待ちであり、まだデッドロックではない。 エ: 正解。⑥で2つ目のトランザクションも相手のロック中テーブルを要求し、互いに解放を待ち合う循環が完成してデッドロックとなる。 💡 デッドロックの判定は「待ちの矢印が循環した瞬間」。複数トランザクションが資源を逆順にロックする構図が典型で、片方向の待ちはまだデッドロックでない点に注意。

出典:平成29年度 秋期 プロジェクトマネージャ試験 午前I 問8 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・904問収録)

「データベース」分野の攻略ポイント

関係モデル・正規化・SQL・トランザクション管理・障害回復・データベース設計が中心です。計算問題は少なく、定義と手順を正確に覚えていれば確実に得点できる、いわば「取りこぼしてはいけない」分野です。特に正規形とACID特性は毎年のように形を変えて出ます。

データベースの攻略ポイントをすべて見る(要点5項目・ひっかけ3項目)→

同じ分野(データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計))の過去問