6、CPU優化(5)最大並行度

1、概念緩存

1.關聯掩碼(affinitymask)服務器

  爲了執行多任務,MicrosoftWindows2000和WindowsServer2003有時會在不一樣的處理器之間移動進程線程。雖然從操做系統方面而言,這種活動是高效的,可是在高系統負荷的狀況下,該活動會下降SQLServer的性能,由於每一個處理器緩存都會不斷地從新加載數據。若是將各個處理器分配給特定線程,則經過消除處理器的從新加載須要以及減小處理器之間的線程遷移(於是減小上下文切換),能夠提升在這些條件下的性能;線程與處理器之間的這種關聯稱爲「處理器關聯」。ide

  SQLServer經過如下兩個關聯掩碼選項來支持處理器關聯:affinitymask(也稱爲CPUaffinitymask)和affinityI/Omask。對具備33到64個處理器的服務器的CPU和I/O關聯支持要求分別使用affinity64mask服務器配置選項和affinity64I/Omask服務器配置選項(這2個服務器配置選項僅在64位操做系統上可用)。http://technet.microsoft.com/zh-cn/library/ms187104.aspx性能

注意:操作系統

  SQLServer2012聯機手續中提到,後續版本的SQLServer將刪除該功能。請不要在新的開發工做中使用該功能,並儘快修改當前還在使用該功能的應用程序。線程

2.並行的開銷閾值(costthresholdforparallelism)blog

  costthresholdforparallelism選項指定SQLServer建立和運行並行查詢計劃的閾值。僅當運行同一查詢的串行計劃的估計開銷高於在「並行的開銷閾值」中設置的值時,SQLServer才建立和運行該查詢的並行計劃。開銷指的是在特定硬件配置中運行串行計劃估計須要花費的時間(秒)。「並行的開銷閾值」選項可設置爲0到32767之間的任何值。默認值爲5。索引

3.最大並行度(maxdegreeofparallelism)進程

  可使用maxdegreeofparallelism選項來限制並行計劃執行時所用的處理器數。SQLServer考慮爲查詢、索引數據定義語言(DDL)操做、靜態的和由鍵集驅動的遊標填充實施並行執行計劃。資源

  除了查詢和索引操做以外,此選項還控制DBCCCHECKTABLE、DBCCCHECKDB和DBCCCHECKFILEGROUP的並行。使用跟蹤標誌2528,能夠禁用爲這些語句所作的並行執行計劃。

  查詢執行計劃如何肯定最大並行度?通常按照如下準則:

(1)若要使服務器可以肯定最大並行度,請將此選項設置爲默認值0。

(2)若將maximumdegreeofparallelism設置爲0,SQLServer將可以使用至多64個可用的處理器。

(3)若要取消生成並行計劃,請將maxdegreeofparallelism設置爲1。

(4)將該值設置爲1到32,767之間的數值來指定執行單個查詢所使用的最大處理器核數。若是指定的值比可用的處理器數大,則使用實際可用數量的處理器。

(5)若是計算機只有一個處理器,將忽略maxdegreeofparallelism值。

4.MAXDOP

  您能夠經過在查詢語句中指定MAXDOP查詢提示來覆蓋查詢中的maxdegreeofparallelism值。

  索引操做(如建立或從新生成索引、或刪除彙集索引)可能會大量佔用資源。您能夠經過在索引語句中指定MAXDOP索引選項來覆蓋索引操做的maxdegreeofparallelism值。MAXDOP值在執行時應用於語句,但不存儲在索引元數據中。http://technet.microsoft.com/zh-cn/library/ms189329.aspx

2、配置服務器配置選項

1.SSMS

  在服務器(實例)的「屬性」窗口選擇「高級」節點。

  在「最大並行度」框中,選擇執行並行計劃時所使用的最大處理器數。

  在「並行」下,將「並行的開閥值」選項更改成所需值,鍵入或選擇一個值(介於0到32767之間)。

131407651.png

2.SP_Config

  在下例中,將最大並行度設置爲8,將並行的開銷閥值設置爲10秒。

USEdb01;
GO
EXECsp_configure'showadvancedoptions',1;
GO
RECONFIGUREWITHOVERRIDE;
GO
EXECsp_configure'maxdegreeofparallelism',8;

EXECsp_configure'costthresholdforparallelism',10;

GO
RECONFIGUREWITHOVERRIDE;
GO

3.效果

  在配置maxdegreeofparallelism和CostThresholdForParallelism選項以後,這些設置將當即生效,無需從新啓動服務器。

3、最佳實踐建議

  使用sp_configure將maxdegreeofparallelism選項設置爲8或小於8的值。將此選項設置爲大於8的值一般致使沒必要要的資源消耗和性能降低。

http://support.microsoft.com/kb/329204

  請遵循如下準則:

(1)對於使用8個以上的處理器的服務器使用如下配置:MAXDOP=8。

(2)服務器的有8個或更少的處理器,使用下列配置其中N等於處理器數:MAXDOP=0到N。

(3)對於具備NUMA配置的服務器,MAXDOP不該超過度配給每一個NUMA節點的cpu數。

(4)超線程已啓用的服務器的MAXDOP值不該超過物理處理器的數量。

本文結語:

  請根據業務負荷的特色,設置關聯掩碼和最大並行度。根據最佳實踐,最大並行度不要超過8。

相關文章
相關標籤/搜索