[SQL SERVER][Performance]善用parallel#測試

[SQL SERVER][Performance]善用parallel#測試

 

我將利用老爺機來測試parallel在performance上所帶來的效果。 

系統資訊

image

image

測試table筆數

image

 

Alter table 測試

取消max degree of parallelis(抑制產生平行計畫)

image 

執行修改(non-parallel)

ALTER TABLE dbo.nabk_p2 ADD CONSTRAINT PK_nabk_p2 PRIMARY KEY (SYS_SERIAL);

Go

執行計畫:索引插入(34%)和排序(64%)成本最高

image image

 

執行修改(parallel)

image image

總表

image

 

Create Index測試

執行修改(non-parallel)

CREATE NONCLUSTERED INDEX idx1_nabk_p2 on dbo.nabk_p2(POLICY_NO, RECE_NO);

image

執行計畫:索引插入(21%)和排序(67%)成本最高

image image

 

執行修改(parallel)

CREATE NONCLUSTERED INDEX idx1_nabk_p1 on dbo.nabk_p1(POLICY_NO, RECE_NO) with(MAXDOP=2);

image

執行計畫多了平行處理原則

image

image image

總表

image

 

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 ;

image

執行計畫:排序(97%)成本最高

image

 

執行sql statement(parallel)

計畫中多了平行處理原則,但整體執行計畫變得複雜許多。

image

執行計畫:排序(82%)成本最高

image

總表

image

 

結論:SQL Server parallel看來沒有偷懶,經過一些簡單測試

發現SQL SERVER果然依CPU執行數量平均分散WorkLoad進而提升資料庫整體效能,該技術實在可多加利用。