學習手動調整平行處理設定 Learn About Manually Tweaking Parallel Processing Settings

一般來說,SQL Server 平行查詢處理都是針對需高成本的大量運算來處理,如下列條件:

●當 CPU 數量大於活動連接數量

●當序列化查詢預估成本高於平行處理原則所設定的成本臨界值(預估成本是指執行序列化查詢之經過時間(以秒為單位))。

然而有些陳述句類型是無法使用平行處理的。例如 UPDATE, INSERT, 和 DELETE 操作通常無法使用平行處理即便相關查詢符合標準。但在某些情況下,SQL Server會更改序列化查詢並使用平行處理,如 Update 或 Delete陳述句包含 Where 或者 Insert 陳述句包含 Select , Where 和 Select 是可以使用平行處理。

設定平行處理請完成以下步驟:

1. 伺服器屬性選擇進階選項。

clip_image001[13]

2. 預設平行處理原則的最大程度是0,這意味者平行處理是交給SQL Server自行控制。基本上,SQL Server會根據工作負載來使用實際可用的處理器數量,來限制平行處理所使用處理器數量(SQL Server可支援最大數量),可以改變平行處理原則的最大程度數值並輸入大於1。如果該數值設定為1的話,那麼SQL Server將不會使用平行處理運算。

3. 龐大又複雜的查詢通常可以透過平行處理帶來改善。然而,SQL Server平行處理原則只針對序列化查詢預估成本高於平行處理原則的成本臨界值。你可以透過進階選項來設定平行處理原則的成本臨界值。數值範圍界於0~32767。但如果你只有單一處理器的話就可忽略該設定。

4. 點擊確定後相關改變立即生效。你不需要重新啟動伺服器。

你也可以使用系統預存程序 sp_configure來設定平行處理。命令如下:
T-SQL

exec sp_configure ‘max degree of parallelism’, <integer value>

exec sp_configure ‘cost threshold for parallelism’, <integer value>

Windows PowerShell

Invoke-Sqlcmd -Query "exec sp_configure ‘max degree of parallelism’,

<integer value> exec sp_configure ‘cost threshold for parallelism’,

<integer value>" -ServerInstance "Server\Instance"

來源出處: Microsoft Press book Microsoft SQL Server 2008 Administrator’s Pocket Consultant, Second Edition by William R. Stanek.