[SQL SERVER][Performance]善用parallel#測試
我將利用老爺機來測試parallel在performance上所帶來的效果。
系統資訊
測試table筆數
Alter table 測試
取消max degree of parallelis(抑制產生平行計畫)
執行修改(non-parallel)
ALTER TABLE dbo.nabk_p2 ADD CONSTRAINT PK_nabk_p2 PRIMARY KEY (SYS_SERIAL);
Go
執行計畫:索引插入(34%)和排序(64%)成本最高
執行修改(parallel)
總表
Create Index測試
執行修改(non-parallel)
CREATE NONCLUSTERED INDEX idx1_nabk_p2 on dbo.nabk_p2(POLICY_NO, RECE_NO);
執行計畫:索引插入(21%)和排序(67%)成本最高
執行修改(parallel)
CREATE NONCLUSTERED INDEX idx1_nabk_p1 on dbo.nabk_p1(POLICY_NO, RECE_NO) with(MAXDOP=2);
執行計畫多了平行處理原則
總表
Select測試
執行sql statement(non-parallel)
select * from dbo.nabk_p2 t2 join dbo.NABK_p1 t1
on t1.sys_serial= t2.sys_serial and t1.POLICY_NO=t2.POLICY_NO and t2.sys_serial between 5071001 and 6271001
order by 2 ;
執行計畫:排序(97%)成本最高
執行sql statement(parallel)
計畫中多了平行處理原則,但整體執行計畫變得複雜許多。
執行計畫:排序(82%)成本最高
總表
結論:SQL Server parallel看來沒有偷懶,經過一些簡單測試
發現SQL SERVER果然依CPU執行數量平均分散WorkLoad進而提升資料庫整體效能,該技術實在可多加利用。