SQL Server中的最大并行度(max degree of parallelism)如何設(shè)置呢? 設(shè)置max degree of parallelism有什么好的建議和指導(dǎo)方針呢?在微軟官方文檔Recommendations and guidelines for the "max degree of parallelism" configuration option in SQL Server有這方面的建議和指導(dǎo)方針
Use the following guidelines when you configure the MAXDOP value.
SQL Server 2005 and later versions
Server with single NUMA node | Less than 8 logical PRocessors | Keep MAXDOP at or below # of logical processors |
Server with single NUMA node | Greater than 8 logical processors | Keep MAXDOP at 8 |
Server with multiple NUMA nodes | Less than 8 logical processors per NUMA node | Keep MAXDOP at or below # of logical processors per NUMA node |
Server with multiple NUMA nodes | Greater than 8 logical processors per NUMA node | Keep MAXDOP at 8 |
個人覺得上面關(guān)于(max degree of parallelism)的建議、指導(dǎo)方針有點抽象、不太科學(xué)。因為不同的系統(tǒng)的負載可能不一樣。這樣一個籠統(tǒng)的建議實在讓人覺得缺少合理的依據(jù)。
另外一種關(guān)于(max degree of parallelism)的推薦設(shè)置是根據(jù)系統(tǒng)類型(也可以理解為系統(tǒng)負載)來設(shè)置,具體建議如下所示:
OLTP系統(tǒng):
在純OLTP系統(tǒng)上,它的事務(wù)較短,SQL查詢時間短,但是非常頻繁。設(shè)置“Maximum degree of Parallelism”(MAXDOP)為1。這樣做可以確保查詢永遠不必使用并行方式運行,并且不會導(dǎo)致更多的數(shù)據(jù)庫引擎開銷。
OLAP系統(tǒng):
Data-warehousing / Reporting server: 因為查詢執(zhí)行時間一般較長,建議設(shè)置“Maximum degree of Parallelism”(MAXDOP)為0。
這樣大多數(shù)查詢將會利用并行處理,執(zhí)行時間較長的查詢也會受益于多處理器而提高性能。
混合系統(tǒng)
Mixed System (OLTP & OLAP):這樣環(huán)境會是一個挑戰(zhàn),必須找到正確的平衡點。一般采取了非常簡單的方法。設(shè)置“Maximum degree of
Parallelism”(MAXDOP)為2,這樣意味著查詢?nèi)詴褂貌⑿胁僮鞯莾H利用2顆CPU。并且把“并行查詢閥值”(cost threshold for parallelism)設(shè)置為較高的值,這樣的話,不是所有的查詢都有資格使用并行,除了那些查詢成本較高的查詢………
cost threshold for parallelism 選項可設(shè)置為 0 到 32767 之間的任何值。默認值為 5。
個人比較傾向于第二種(max degree of parallelism)設(shè)置的指導(dǎo)方針,混合系統(tǒng)設(shè)置max degree of parallelism,建議結(jié)合第一種推薦設(shè)置與第二種,然后結(jié)合等待事件CXPACKET的情況,作出適當?shù)恼{(diào)整。不要指望一成不變的推薦設(shè)置,這樣是不合理。只能根據(jù)比較大眾的推薦設(shè)置,然后結(jié)合自身系統(tǒng)的具體情況,作出適當?shù)恼{(diào)整、優(yōu)化。
對于NUMA與SMP不太清楚的地方,可以參考下面資料。
傳統(tǒng)的多核運算是使用SMP(Symmetric Multi-Processor )模式:將多個處理器與一個集中的存儲器和I/O總線相連。所有處理器只能訪問同一個物理存儲器,因此SMP系統(tǒng)有時也被稱為一致存儲器訪問(UMA)結(jié)構(gòu)體系,一致性意指無論在什么時候,處理器只能為內(nèi)存的每個數(shù)據(jù)保持或共享唯一一個數(shù)值。很顯然,SMP的缺點是可伸縮性有限,因為在存儲器和I/O接口達到飽和的時候,增加處理器并不能獲得更高的性能。
NUMA模式是一種分布式存儲器訪問方式,處理器可以同時訪問不同的存儲器地址,大幅度提高并行性。 NUMA模式下,處理器被劃分成多個"節(jié)點"(node), 每個節(jié)點被分配有的本地存儲器空間。 所有節(jié)點中的處理器都可以訪問全部的系統(tǒng)物理存儲器,但是訪問本節(jié)點內(nèi)的存儲器所需要的時間,比訪問某些遠程節(jié)點內(nèi)的存儲器所花的時間要少得多。
SQL Server 2005開始支持NUMA,可參考SQL Server 2008的NUMA支持 。需要注意的是,硬件、操作系統(tǒng)、應(yīng)用軟件 三者都要支持 NUMA ,才能充分利用這一特性
參考資料:
https://msdn.microsoft.com/zh-cn/library/ms181007(v=sql.105).aspx
https://support.microsoft.com/en-us/kb/2806535
http://blog.sqlauthority.com/2011/02/06/sql-server-cxpacket-parallelism-usual-solution-wait-type-day-6-of-28/
http://blogs.msdn.com/b/psssql/archive/2015/04/28/server-s-max-degree-of-parallelism-setting-resource-governor-s-max-dop-and-query-hint-maxdop-which-one-should-sql-server-use.aspx
http://blogs.msdn.com/b/psssql/archive/2013/09/27/how-it-works-maximizing-max-degree-of-parallelism-maxdop.aspx
http://dbanotes.net/database/numa.html
https://technet.microsoft.com/zh-cn/library/ms188603(SQL.90).aspx
新聞熱點
疑難解答
圖片精選