SQL Server 的max degree of parallelism引數

tolywang發表於2009-07-09

            當 SQL Server 在具有多個微處理器或 CPU 的計算機上執行時,它將為每個並行計劃執行檢測最佳並行度(即執行一個語句所使用的處理器數)。您可以使用 max degree of parallelism 選項來限制並行計劃執行時所用的處理器數。如果預設值為 0,則使用所有可用的處理器。將 max degree of parallelism 設定為 1 以取消生成並行計劃。將該值設定為大於 1 的數字(最大為 64)來限制執行單個查詢時所用的最大處理器數。如果指定的值比可用的處理器數大,則使用實際可用數量的處理器。如果計算機只有一個處理器,則將忽略 max degree of parallelism 值。

 

以下來自微軟工程師經驗傳授:

關於max degree of parallelism這個選項,一般情況下采用預設的0就可以了,這樣的話SQL會根據查詢的複雜度來決定使用多大併發度的查詢。但是在有些OLTP(聯機事務處理)系統中,我們會發現SQL中存在大量的併發查詢,從而可能從兩方面影響SQL效能:

1. 單個查詢的併發度過高會導致查詢會花大量的時間在等待併發同步上,從而影響查詢效能
2. 併發查詢太多會佔用大量的CPU資源,從而減少其它查詢得到CPU時間的機會,這樣的話會使其它查詢變慢。

一般來說,如果我們看到SQL Server中有大量的CXPACKET等待型別、或者有許多查詢長期處於Runnable的狀態(表示該查詢在等待CPU時間片),我們會建議客戶將併發度降下來,以進一步排查問題。

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-608752/,如需轉載,請註明出處,否則將追究法律責任。

相關文章