第十七章——配置SQLServer(1)——為SQLServer配置更多的處理器

來源:互聯網
上載者:User

標籤:

原文: 第十七章——配置SQLServer(1)——為SQLServer配置更多的處理器

前言:

        SQLServer提供了一個系統預存程序,SP_Configure,可以協助你管理執行個體層級的配置。微軟建議使用預設配置,但是基於不同的伺服器、不同負載的系統和你的用法,更改配置可能會給你的效能帶來好處。在32位和64位系統中,sp_configure會有一些差異。

        我們經常見到SQLServer所在的伺服器上還包含了如IIS、檔案伺服器或者網域控制站這些服務或者功能。這些會影響你的效能甚至對正常運作有阻礙作用。

本系列文章將包含:

1、 為SQLServer配置更多的處理器。

2、 32位和64位系統中的記憶體配置。

3、 配置“對即時負載的最佳化”。

4、 最佳化SQLServer執行個體的配置。

配置SQLServer以使用更多的處理器:

         今時今日的系統,資料庫變得越來越大。為了更快地從資料庫擷取資訊,僅靠管理你的資料庫並不足夠,還需要更多的CPU來處理。

不管你如何高效地維護索引和統計資訊,你都很難從一個使用低效CPU的SQLServer中獲得足夠好的回應時間。如何選擇合適的CPU用於資料庫的運作不在本系列的範圍之內,但是我們將示範如何使的你的CPU運作得更加強大和有效。

        你是否曾經想過SQLServer在執行查詢的時候會使用多少個CPU?使用者經常希望通過購買更多、更快的CPU來加快SQLServer的運作,但是更重要的應該是關注在SQLServer在運行時需要用到多少個?

 

開始工作:

        在開始深入之前,需要瞭解你的伺服器上有多少個CPU。可以使用一個SQLServer的DMV,sys.dm_os_sys_info來尋找這部分的資訊。這個DMV會嘗試返回關於電腦和關於資源消耗等方面的資訊:


SELECT  cpu_count AS ‘Cores‘ ,--邏輯CPU總數        hyperthread_ratio--一個物理CPU的邏輯核心與物理核心的比FROM    sys.dm_os_sys_info

  

步驟:

1、 為了設定在執行個體層級上執行查詢時用到的CPU數量,執行下面語句:

--0是預設值sp_configure ‘max degree of parallelism‘, 0 RECONFIGURE WITH OVERRIDE GO


2、 從語句層級去設定並行度的值,可以使用hint來實現,下面加上SETSTATISTICS TIME來看看不同的並行度的差異:


SET STATISTICS TIME ON SELECT  *FROM    Sales.SalesOrderDetailOPTION  ( MAXDOP 1 )SET STATISTICS TIME OFF GOSET STATISTICS TIME ON SELECT  *FROM    Sales.SalesOrderDetailOPTION  ( MAXDOP 0 )SET STATISTICS TIME OFFGO


下面是:



分析:

        SQLServer 有很優秀的演算法體系去決定是否並行執行查詢。改寫SQLServer的決定需要經驗和專業知識。至於使用多少個CPU,這個比較確定的方法就是——實驗。

        在步驟1中,使用SP_Configure預存程序來把最大並行度設為0,也就是預設值,這個值代表這SQLServer是否產生並存執行計劃,如果是,可以使用多少個CPU。如果你設定為4,SQLServer將使用4個核心來處理查詢,如果設為1,就不會發生並行度。

        在步驟2中,使用OPTION來對特定查詢設定並行查詢。這裡有兩個SELECT語句同時執行。第一個查詢使用了MAXDOP =1,意味著不使用並行度執行查詢,而第二個查詢使用了MAXDOP =0,意味著由SQLServer自己決定是否使用並行度運行。

        在加了SET STATISTICS TIME之後,可以看到每個查詢總共消耗了多少CPU時間。

 

擴充知識:

        在生產環境中更改預設的最大並行度將會非常危險。所以儘可能保持現狀,如果你想修改,需要和你的上司或者同事商討。經驗表明,SQLServer並不總是為了單一查詢而使用所有CPU。除此之外,在OLTP系統中,不建議調整這個設定,但是在OLAP系統中,這卻是可以考慮的。

        另外,如果你有16個核心,並把MaxDegree of Parallelism設為8,並不以為這隻有8個核心會用在SQLServer上,僅僅代表單一查詢不會使用超過8個核心而已,即使在並行運行,也如此。但是SQLServer依然會使用所有可用的核心。

第十七章——配置SQLServer(1)——為SQLServer配置更多的處理器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.