質問編集履歴
2
現状の報告
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
2017/07/09
|
2
|
+
下記3件の質問の内、1と2について回答が得られていないのですが、一旦質問をクローズいたします。
|
3
|
+
理由としましては、
|
4
|
+
・3の質問に関してご回答いただけたことで、対応策の事例収集という目的の一つは達せられたこと。
|
5
|
+
・排他ロックについて異なる事象が発生し、1、2の質問から派生して調査等をおこなったほうがよさそうであること。
|
6
|
+
・ただ、1、2に関して自分なりの調査・検証時間がしばらく確保できない見込みであること。
|
7
|
+
です。
|
8
|
+
ご回答いただいたお二方ありがとうございました。お礼が遅くなりすみません。
|
9
|
+
今後、自分での調査・検証を進めることができましたら、追記等させていただきたいと思います。
|
10
|
+
|
11
|
+
---
|
12
|
+
|
1
13
|
SQL Serverを使用したWebアプリで発生した事象です。
|
2
14
|
|
3
15
|
##現象
|
1
SQL Server バージョン修正/調査時の結果追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
デバックすると、Session2のSELECT箇所および排他エラー処理はすり抜けてしまい、後続のヘッダテーブル更新箇所でロック開放待ち→タイムアウトしていました。
|
16
16
|
|
17
17
|
##環境
|
18
|
-
SQL
|
18
|
+
SQL Server2014
|
19
19
|
ReadCommitted Snapshot
|
20
20
|
|
21
21
|
##問題のSQL等
|
@@ -85,6 +85,13 @@
|
|
85
85
|
**1)実行計画の調査**
|
86
86
|
Session2のアプリ内SQLの実行計画を見てみたところ、ヘッダテーブルのスキャンにPK以外のインデックス(例:上記のIDX_受注情報ヘッダ01)が使われていました。
|
87
87
|
|
88
|
+
**推定実行プラン**
|
89
|
+
**Session1:**
|
90
|
+
Clustered Index Seek[PK] 受注情報ヘッダ
|
91
|
+
**Session2:**
|
92
|
+
Index Seek(NonClustered)[IDX_受注情報ヘッダ01] 受注情報ヘッダ 50%
|
93
|
+
Index Seek(NonClustered)[受注情報ボディのインデックス] 受注情報ボディ 50%
|
94
|
+
|
88
95
|
**2)ロック状況の確認**
|
89
96
|
いくつかサイトで紹介されていた、下記のロック状況確認SQLを実行しました。
|
90
97
|
結果、Session1とSession2それぞれ、「resource_associated_entity_id」の値が異なりました。
|
@@ -121,10 +128,25 @@
|
|
121
128
|
T1.request_session_id
|
122
129
|
|
123
130
|
```
|
131
|
+
**検索結果**
|
132
|
+
Session1と2のSQLを実行後、確認SQLを実行したときの検索結果は下図のようになりました。
|
133
|
+
両セッション間で、resource_associated_entity_idの値が違います。
|
134
|
+

|
124
135
|
|
125
136
|
**3)WITH句のヒント句にインデックス指定**
|
126
137
|
WITH句に、PKのインデックスを指定したところ、期待値どおりになりました。
|
127
138
|
|
139
|
+
**推定実行プラン**
|
140
|
+
**Session2**
|
141
|
+
Clustered Index Seek[PK] 受注情報ヘッダ 51%
|
142
|
+
Index Seek(NonClustered)[受注情報ボディのインデックス] 受注情報ボディ 49%
|
143
|
+
|
144
|
+
**検索結果**
|
145
|
+

|
146
|
+
|
147
|
+
※ちなみに、nowait指定を外すとSession2は待ちとなりますが、そのときの検索結果は次のようになりました。
|
148
|
+

|
149
|
+
|
128
150
|
##質問と仮説
|
129
151
|
**1)resource_associated_entity_idとは何を指すのか?**
|
130
152
|
sys.dm_tran_locksの「resource_associated_entity_id」の項目に表示される値は何なのでしょうか?
|