我運行SQL Server跟蹤來跟蹤一些死鎖問題,並且我的頭部被命名爲Parallel query worker thread was involved in a deadlock
,這是造成死鎖的原因。並行查詢工作者線程陷入了死鎖
Q1:這是否意味着同樣的查詢死鎖它的自我?查詢執行計劃顯示了一些並行情況。
Q2:有什麼方法可以「強制」SQL Server不使用並行或至少避免使用它儘可能多?
我運行SQL Server跟蹤來跟蹤一些死鎖問題,並且我的頭部被命名爲Parallel query worker thread was involved in a deadlock
,這是造成死鎖的原因。並行查詢工作者線程陷入了死鎖
Q1:這是否意味着同樣的查詢死鎖它的自我?查詢執行計劃顯示了一些並行情況。
Q2:有什麼方法可以「強制」SQL Server不使用並行或至少避免使用它儘可能多?
Q1:沒有這隻意味着這個死鎖涉及到一個Exchange運營商。在客戶端,您會看到錯誤「事務(進程ID n)在另一個進程上被{線程| 通信緩衝區}資源死鎖,並且被選爲死鎖犧牲品。」
這些類型的死鎖將始終包含兩個或多個進程,並且將始終包含一個鎖資源。
Here is a repro在這種情況下。在大多數情況下,使用正確的索引將解決此問題。
當一個進程死鎖與自己(很少與最新版本)它被稱爲內部查詢並行性死鎖,你會得到一個錯誤,如「消息8650,級別13,狀態1,行1內部查詢並行性導致您的服務器命令(進程ID n)死鎖。使用查詢提示選項(maxdop 1)重新運行沒有內部查詢並行性的查詢。「詳情請參閱this link。
Q2:請參閱Denis提供的鏈接。
Dead repro link。你可以擴展鏈接中的內容嗎? –
看看Understanding and Using Parallelism in SQL Server
你也想看看使用MAXDOP作爲查詢提示
有時候,你需要的是一個指數,看Fix Execution Plan showing Parallelism
查詢線上書籍中的MAXDOP – SQLMenace