[SQL SERVER][Performance]善用parallel#簡介

[SQL SERVER][Performance]善用parallel#簡介

Parallel該技術Enterprise才有支援。

 

由於現在電腦大多都擁有多顆CPU(AMD將推出六核-眾所矚目的“Istanbul”六核心伺服器處理器),

而SQL SERVER為了善用每顆CPU也提供了平行化處理,利用平行化執行查詢或alter table、alter index….等,

可以更有效率的完成作業(畢竟一條馬路6線道會比一線道來的比較不塞車),

在執行計畫中,SQL Server會自行判斷使用parallel處理的程度及複雜度,

大致上使用的parallel數量不會超過實體CPU總數(依MAXDOP value決定),

基本上我們可以執行sp_configure來修改maxdop的值,而這也會設定SQL SERVER所使用的CPU數量。

maxdop設定大致須注意以下兩點

1.伺服器有八顆或更少的CPU, MAXDOP = 0 ~N(N等於CPU最大數量)

2.如果伺服器啟用超執行緒, MAXDOP 值不應超過實體處理器的數目。

 

查詢時我們可以覆寫maxdop的值,希望使用parallel有效率完成工作,

但也不是每每都能使用parallel(SQL Server還是有個性的~XD),

大致上以下兩點將不會使用parallel:

1.執行計畫中的查詢序列成本不夠高,將不會使用parallel。

2.如果序列執行計畫成本優於任何平行執行計畫成本。

(微軟建議maxdop=0,由SQL Server優化器自行判斷決定,在實際情況我碰過強制使用parallel查詢反而成本和Non-parallel相差不大)

 

當然不只查詢可以使用parallel,前面還有提到alter table、alter index、create index和rebuild index…等。

更多詳細資訊可參考MSDN Library,小弟大概簡介至此,下篇將來實際測試一下。

平行程度

平行查詢處理

設定平行索引作業