Sql-Server
何時更改 64 位伺服器上的 SQL 2005 最大工作執行緒數
伺服器環境:
- Windows 2003 標準 R2 x64 SP2
- SQL 2005 企業版 64 位 SP2
- HP ProLiant BL460c G1、Xeon E5440 2.83 Ghz 處理器(四核)
- 8 GB 記憶體
**編輯:**我還應該注意 max_workers_count 目前為 4 處理器盒的預設值 512
我們遇到了執行緒池死鎖,我很確定這與並行性有關。死鎖圖與 Bart Duncan 關於Intra-Query Parallel Thread Deadlocks的文章中的幾乎相同,並且我沒有看到死鎖輸出中提到鎖資源,正如他文章的警告部分中提到的那樣,這就是導致我的原因相信這是一個並行的事情。
我正在調整看起來與這些相關的查詢,但這需要一點時間(閱讀“幾週”)。同時,我想知道作為臨時解決方法,增加執行緒池是否明智。
那裡有任何 SQL Jocks 想幫助一個人嗎?
(順便說一句 - 由於這個問題,現在不能選擇 SP3 )
如果與 Bart Duncan 的部落格文章中的並行性相關,那麼增加工作人員的數量根本不會影響您的死鎖場景。如果它確實是一個並行死鎖,那麼您的快速解決方法是在您調整它時對有問題的查詢進行 OPTION(MAXDOP n),並將其限制在死鎖停止的位置。你可能不一定需要回到 DOP 1,我以前見過 DOP 4 修復它。
要查看的另一件事是,如果在伺服器上啟用了超執行緒,則將其禁用。SQLOS 為 SQL Server 可用的每個邏輯 CPU 創建一個使用者調度程序。使用超執行緒,您可以獲得 8 個邏輯 CPU,這意味著您有 8 個使用者調度程序。當您確實有 4 個 CPU 時,您的查詢可能在 DOP 8 處執行,這可能會導致您的問題。您可以通過計算死鎖 XML 圖中的流程節點數來判斷這是否是問題的一部分。如果您有 8 個程序節點,那麼您應該嘗試在伺服器上禁用超執行緒,看看是否能解決問題。