メインコンテンツへスキップ
システムアーキテクト2017年度 春期午前I8

2017年度 春期 システムアーキテクト 午前I8

難度標準

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

時間

トランザクション A

① トランザクション開始

③ テーブルa更新

⑤ テーブルb更新

⑦ トランザクション終了

トランザクションB

② トランザクション開始

④ テーブルb更新

⑥ テーブルa更新

⑧ トランザクション終了

選択肢

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

エが正解となるのは、デッドロックの発生メカニズムとトランザクションのロック・アンロックのタイミングを考慮すると明らかです。デッドロックとは、複数のトランザクションが互いに相手が保持しているリソースの解放を待ち続けてしまい、処理が永久に停止してしまう状態を指します。この問題では、トランザクションAはテーブルaをロックした後にテーブルbをロックしようとし、トランザクションBはテーブルbをロックした後にテーブルaをロックしようとしています。

詳細Layer 2

具体的に見ていきましょう。①でトランザクションAが開始し、③でテーブルaを更新するためにロックを獲得します。一方、②でトランザクションBが開始し、④でテーブルbを更新するためにロックを獲得します。ここで、もしトランザクションAが⑤でテーブルbのロックを試みる際に、すでにトランザクションBが⑥でテーブルaのロックを試みる場合、両者は相手がロックを解除するのを待ち続けることになります。トランザクションAはテーブルbのロックを待っており、トランザクションBはテーブルaのロックを待っているため、⑤と⑥のタイミングでデッドロックが発生します。トランザクションは終了時にロックをアンロックするため、⑤や⑥の後にアンロックが行われる前に、互いが相手のリソースを必要としている状況が解消されないのです。

補足Layer 3

アの③では、トランザクションAがテーブルaのロックを獲得しただけで、まだデッドロックは発生していません。イの④では、トランザクションBがテーブルbのロックを獲得した段階であり、こちらもデッドロック発生には至っていません。ウの⑤は、トランザクションAがテーブルbのロックを試みるタイミングですが、この時点ではまだデッドロックが確定したわけではなく、デッドロックが発生する可能性のある状況の一つです。エの⑥は、トランザクションBがテーブルaのロックを試みるタイミングであり、この時にトランザクションAがテーブルbをロックしたまま待機していると、互いにロックを待ち合う状態が確定し、デッドロックが発生します。

この解説は?
この解説は AI 生成です(詳細)

解説テキストは Google Gemini に IPA 公式の問題文・公式解答を入力して生成しました。 人間によるレビューを行ったものと、未レビューのものが混在します。

AI は事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があります。 重要な判断は必ず IPA 公式 PDF または最新の参考書でご確認ください。

解説の検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

※ AI 生成の解説は誤りを含む可能性があります。重要な判断は IPA 公式資料でご確認ください。

最終更新:

分野「データベース」の学習ポイント

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
正規化・SQL・トランザクション特性(ACID)・同時実行制御・分散DBの基本。
学習の進め方
ER 図 ⇄ 関係スキーマ ⇄ SQL の3者を行き来できるよう演習。3NF までの正規化を手で実行できると強い。
関連キーワード
正規化SQLACIDトランザクションロックデッドロックER図
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

共有

X でシェアLINE

ショート動画

関連する問題

データベース の他の問題