世間はすっかりハロウィーンムード。用事を済ませた後、立ち寄ったドトールのコーヒーもハロウィーン仕様でした。
デッドロックの続きです。次はトレースフラグ 1204 の説明をします。下記の二つの記事から、トレースフラグ 1204 を設定し、デッドロックを発生させてみましょう。
ryuchan.hatenablog.com
ryuchan.hatenablog.com
前回同様デッドロックが発生しました。
それでは、ERROR ログの内容を参照してみましょう。デッドロック対象となったプロセスは、46,47行目に出力されています。SPID:53 で発行したクエリがデッドロック対象となったことがわかります。どのリソースでロックが発生しているかは、6,27行目に出力されています。
- Deadlock encountered .... Printing deadlock information
- Wait-for graph
- Node:1
- KEY: 10:72057594047365120 (61a06abd401c) CleanCnt:2 Mode:X Flags: 0x1
- Grant List 3:
- Owner:0x0000026DD2E5F280 Mode: X Flg:0x40 Ref:0 Life:02000000 SPID:51 ECID:0 XactLockInfo: 0x0000026DEBAA7250
- SPID: 51 ECID: 0 Statement Type: UPDATE Line #: 17
- Input Buf: Language Event: DECLARE @Error_Message NVARCHAR(MAX);
- DECLARE @Error_Severity INT;
- DECLARE @Error_State INT;
- WHILE 0 = 0
- BEGIN
- BEGIN TRY
- BEGIN TRAN
- -- ProductID = 2 のデータを更新する。
- UPDATE
- Production.Product
- SET
- Requested by:
- ResType:LockOwner Stype:\'OR\'Xdes:0x0000026DF7554878 Mode: U SPID:53 BatchID:0 ECID:0 TaskProxy:(0x0000026DCF5A2880) Value:0xd2e5e280 Cost:(0/144)
- Node:2
- KEY: 10:72057594047365120 (8194443284a0) CleanCnt:2 Mode:X Flags: 0x1
- Grant List 3:
- Owner:0x0000026DD2E6F680 Mode: X Flg:0x40 Ref:0 Life:02000000 SPID:53 ECID:0 XactLockInfo: 0x0000026DF75548B0
- SPID: 53 ECID: 0 Statement Type: UPDATE Line #: 17
- Input Buf: Language Event: DECLARE @Error_Message NVARCHAR(MAX);
- DECLARE @Error_Severity INT;
- DECLARE @Error_State INT;
- WHILE 0 = 0
- BEGIN
- BEGIN TRY
- BEGIN TRAN
- -- ProductID = 1 のデータを更新する。
- UPDATE
- Production.Product
- SET
- Requested by:
- ResType:LockOwner Stype:\'OR\'Xdes:0x0000026DEBAA7218 Mode: U SPID:51 BatchID:0 ECID:0 TaskProxy:(0x0000026D92B5C880) Value:0xd2e6eb80 Cost:(0/144)
- Victim Resource Owner:
- ResType:LockOwner Stype:\'OR\'Xdes:0x0000026DF7554878 Mode: U SPID:53 BatchID:0 ECID:0 TaskProxy:(0x0000026DCF5A2880) Value:0xd2e5e280 Cost:(0/144)
下記のように KEY 範囲でのロックが出力されていますが、イマイチどのように特定していいのかわかりません。MSDN には下記のように記載されています。hobt_id を用いて sys.partitions (Transact-SQL) を参照することで対象のテーブル、インデックスまで特定することは可能ですが、どのデータで発生したかを特定する方法はありません。
KEY。ロックが保持または要求されているインデックス内のキー範囲を識別します。KEY は KEY: db_id:hobt_id (index key hash value) で表されます。たとえば、KEY: 6:72057594057457664 (350007a4d329) のようにします。
ここで使用するのが、Undocumented Virtual Column です。下記のクエリを SQL Server Management Studio で実行してみましょう。
SELECT %%lockres%%, p.* FROM Production.Product p WHERE %%lockres%% IN ('(8194443284a0)','(61a06abd401c)')
index key hash value を使用して対象となった行を特定することができました。
まだまだ、undocumented あるんですね。深いです。
ハロウィーンで仮装とかしたことないなぁ。
【osharemart】 スーパーマリオ マリオ コスプレ 白の手袋付 衣装 コスチューム ハロウィン (マリオL)
- 出版社/メーカー: osharemart
- メディア:
- この商品を含むブログを見る
オーフォックス(Oxfox)ハロウィン衣装 ハロウィーン仮装 巫女 魔女 ハロウィン用品 コスプレ衣装 大人用 レディース ロングドレス 公演服 3点セット オレンジ
- 出版社/メーカー: オーフォックス(Oxfox)
- メディア:
- この商品を含むブログを見る
THE HALLOWEEN collection ふわもこ パンプキン
- 出版社/メーカー: ジグ
- 発売日: 2015/09/05
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
パイレーツ オブカリビアン 風 衣装 コスチューム レディース フリーサイズ
- 出版社/メーカー: 株式会社G&J
- メディア:
- この商品を含むブログを見る
Camelopardalis ハロウィン 子供用 バッドガール 蝙蝠 コスプレ 仮装 衣装 女の子 パーティグッズ ハロウィーン コスチューム ヴァンパイアガール (02 L 120-130cm)
- 出版社/メーカー: Camelopardalis
- メディア:
- この商品を含むブログを見る