H26  午後1問3-設問3

名無しさん  
(No.1)
H26  午後1問3-設問3について質問です。
解答上、2つのTR3同士が実行された場合、デットロックは発生しないとなっています。
その解答プロセスにおいて、下記の認識があっているか確認したいです。

設問に記載の各トランザクションで対象にとる商品は、
トランザクションが同じ番号であれば同じ商品とする前提でしょうか?
例えば
TR3:セット商品1個注文する  
が並列実行された場合、2つのTR3における対象商品は同じ?

TR3が対象にとる商品が異なるセット商品だった場合、デットロックが発生すると思います。
TRの採番がセット商品  OR  単品商品  とその注文数  の組み合わせで分別するのではなく、
同じTR3だったら対象のセット商品まで同じ  という前提なのか、そのような前提が書いてある記載が見当たらず...
常識的に考えて  同一トランザクション=対象に取るデータ(行)も同じ
という理解でよいのでしょうか??
2021.09.11 19:47
Yライセンスさん 
(No.2)
こんばんは。
簡略したご回答になりますが、
2つのTR3がそれぞれ異なるセット商品を対象としていても、デッドロックは発生しないかと思います。(つまり、各TR3のセット商品番号はどのような組合せを考えても良いということです。)
2021.09.14 02:25
GinSanaさん 
DB ゴールドマイスター
(No.3)
結局のところデッドロックの基本に立ち返れば、同じ行を異なる順序で更新するからそうなるわけです。

>トランザクションが同じ番号であれば同じ商品とする前提でしょうか?
そんな前提はないですが、考えるのが楽なのでA、B(トランA)とA、C(トランB)ペアみたいな組み合わせで考えはします。

在庫テーブルの処理順がどうなるのかを考えると、

複数のセット商品は、商品一覧画面に表示された順(表示順)に処理し、

セット商品が在庫不足の場合は、
複数の単品商品を、商品番号順に処理する
わけですが、
セット商品とその内訳の単品商品の処理順は、TR3とTR3で変わらない上に、そもそもセット商品と単品商品が排他サブタイプなので番号が被らんのがでかいですね。
2021.09.14 08:45
名無しさん  
(No.4)
お二方とも回答ありがとうございます。
デットロックと処理順序ソートの関係、わかっているつもりになっていました。
2021.09.14 12:14

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop