HOME»データベーススペシャリスト掲示板»R4 午後1問3 設問3 (1)(2)について
投稿する

[0579] R4 午後1問3 設問3 (1)(2)について

 午後問題の壁さん(No.1) 
設問3 (1)からあまり理解できていないのですが、
・あるピッカーに、1番目に棚3番の商品S3→棚6番の商品S6の順に出庫指示
・別のピッカーに、1番目に棚6番の商品S6→棚3番の商品S3の順に出庫指示
の場合、デッドロックが起きるリスクがあると記載があります。

表2の出庫指示バッチの処理のプログラムの内容で「"出庫指示"を主キー順に読み込み、その順で"棚別在庫"を更新」とあります。
従って、上記のどちらの出庫指示も棚番号、商品コードの順で更新されるので、具体的には棚3番の商品S3→棚6番の商品S6の順に更新され、デッドロックは発生しないと思いましたが、このケースでなぜデッドロックが発生するのが理解できません。デッドロックが発生する理由についてご教授いただけないでしょうか。

設問3(2)についても、模範解答に「"出庫指示"の読み込順を出庫番号、商品番号、棚番号の順に変更する」とありますが、読み込み順を変えても上記の出庫指示の場合、どちらも棚3番の商品S3→棚6番の商品S6の順に更新され、読み込順が「出庫番号、棚番号、商品番号」の時と変わらないのではないかと思いました。
2023.09.16 23:52
DHAさん(No.2) 
情報処理試験の問題は以下3つあると思っていて、この問題は③に該当すると感じますね
①絶対に正解したい問題
②正解した人が合格できる問題
③ほとんどの人が正解できない問題

自分でもいまいち納得感はありませんがあえて解釈するとしたら以下のような解釈でしょうか。
「出庫指示の主キー順に棚別在庫を更新する」の解釈について
→出庫番号,棚番号,商品コードの昇順で棚別在庫を更新される我々がミスリードしている
→出庫指示の登録順に棚別在庫を更新しているがIPAが想定している処理内容

元々デッドロックが発生していなかったのは出庫指示に登録されているデータが以下の通りだった(注文番号以降の列については省略しています)
出庫番号A,棚番号3,商品s3
出庫番号A,棚番号6,商品s6
出庫番号B,棚番号3,商品s3
出庫番号B,棚番号6,商品s6

これだと出庫番号Aを処理するバッチとBを処理するバッチが主キー順に棚別在庫を更新した時にデッドロックは発生しません。
ただし、出庫番号AとBのピッカーは最初に棚番号3から商品を出庫するよう指示されているので待ち時間が発生してしまう

問題文の空欄う~かのケースでデッドロックが発生するリスクがあるとのことで
(う~かの穴埋めに正解した前提ですが)以下のような出庫指示が登録されます。
出庫番号A,棚番号3,商品s3
出庫番号A,棚番号6,商品s6
出庫番号B,棚番号6,商品s6
出庫番号B,棚番号3,商品s3

出庫番号Aの棚別在庫を更新するバッチは棚番号3→6の順で更新する
出庫番号Bの棚別在庫を更新するバッチは棚番号6→3で順で更新する
→デッドロック発生

で模範解答が
「"出庫指示"の読み込順を出庫番号、商品番号、の順に変更する」

うーんこの解答が模範解答なら
「"出庫指示"の読み込順を出庫番号、棚番号、商品番号の順に変更する」でもデッドロックは発生しませんし、そもそも従来どおり「主キー順で読み込み棚別在庫を更新する」でもデッドロック起きませんよねぇ・・・。

この問題の正否で合格/不合格が決まる人って多くないと思いますし、他の設問がしっかり解答できていれば良いと思います。
2023.09.17 00:47
shiroさん(No.3) 
ちゃんと問題読もうよ。
設問3では処理改善後に新たな問題が発生するからどう解決するか、を問われてます。
処理改善前はデッドロックは発生しないって表にも書いてあるよね。
デッドロックはサービス問題だと思うよ。
2023.09.17 10:19
dbenginerさん(No.4) 
わからないから質問しているのに、「問題を読もうよ」と、まぁ偉そうですねw
あなたも「思うよ」と書いており、結局は推測ですよね。
あと、敬語を使った方がいいですよ。
2023.09.21 13:36
名無しさん(No.5) 
流し読みなので全てを正確に把握はしてないけど、
プログラムの説明で
出荷指示について末尾に
『注文単位でコミットする』
最後の補足で
『トランザクションレベルはREAD COMMITED』
てあったから、
各行を更新した時点ではレコードのロックがされたままだと思うよ。
2023.09.22 09:25
logres_fanさん(No.6) 
DB ブロンズマイスター
> 「"出庫指示"を主キー順に読み込み、その順で"棚別在庫"を更新」とあります。
  この意味は、登録順に読み込み、登録順で更新する。逆順の出庫指示を登録してピッカーに送信するのは問題ないけど、そのまま在庫引当を行うとデッドロックの可能性がある。
> 「"出庫指示"の読み込順を出庫番号、商品番号、棚番号の順に変更する」
  この意味は、一定順に並び替える。つまり、逆順が解消される。
  以上は、答えありきです。これ以上は、無理矢理捻り出した屁理屈にしかならないかな。
2023.09.22 16:17

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop