[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,小弟大概簡介至此,下篇將來實際測試一下。