iT邦幫忙

DAY 18
6

SQL SERVER 2008效能監控與最佳化系列 第 18

Day18_實作DataCompression與資料異動之影響

啟用DATA_COMPRESSION選項時在資料異動(DELETE、INSERT、UPDATE)的效能較差,在啟用DATA_COMPRESSION=ROW或PAGE後,若要異動資料時可以先把DATA_COMPRESSION設定為NONE在異動資料如此效能會提高。
實作新增資料時DataCompression對Index的影響。
在Day12_淺談Index與DataCompression有提到啟用DataCompression選項會在異動資料(UPDATE、DELETE、INSERT)會降低效能。
本篇主要測試DataCompression在資料異動時對Index的實際影響。

資料異動測試:
資料異動測試一:建立Index時啟用DATA_COMPRESSION=PAGE選項

IF OBJECT_ID('FactInternetSalesCopy') IS NOT NULL
BEGIN
DROP TABLE FactInternetSalesCopy
END
GO

--建立測試的Table

SELECT *  INTO FactInternetSalesCopy FROM  AdventureWorksDW.dbo.FactInternetSales
WHERE 1=2
GO

--建立叢集索引並啟用DATA_COMPRESSION=PAGE選項
CREATE CLUSTERED INDEX [IX_FactInternetSales] ON [dbo].[FactInternetSalesCopy] 
(	
    [SalesOrderNumber] ASC,
	[SalesOrderLineNumber] ASC
)
WITH (DATA_COMPRESSION=PAGE,MAXDOP=2)
GO

--建立測試資料
INSERT INTO FactInternetSalesCopy
SELECT *   FROM  AdventureWorksDW.dbo.FactInternetSales

執行結果:

邏輯讀取是144092ms,經過時間是3688ms,CPU時間是3828ms
資料異動測試二:建立Index時不啟用DATA_COMPRESSION=PAGE選項

IF OBJECT_ID('FactInternetSalesCopy2') IS NOT NULL
BEGIN
DROP TABLE FactInternetSalesCopy2
END
GO

--建立測試的Table

SELECT *  INTO FactInternetSalesCopy2 FROM  AdventureWorksDW.dbo.FactInternetSales
WHERE 1=2
GO

--建立叢集索引
CREATE CLUSTERED INDEX [IX_FactInternetSales2] ON [dbo].[FactInternetSalesCopy2] 
(	
    [SalesOrderNumber] ASC,
	[SalesOrderLineNumber] ASC
)
WITH (MAXDOP=2)
GO

--建立測試資料
INSERT INTO FactInternetSalesCopy2
SELECT *   FROM  AdventureWorksDW.dbo.FactInternetSales

執行結果:

邏輯讀取是172041ms,經過時間是1585ms,CPU時間是1875ms
資料異動測試結果:

結論:在不啟用DATA_COMPRESSION選項時在資料異動的效能較好,由圖表顯示差了一倍,在啟用DATA_COMPRESSION=ROW或PAGE後,要異動資料時可以先把DATA_COMPRESSION設定為NONE在如此效能會比較好,此外資料壓縮還可以搭配Partition Table,這部分以後會討論到。


上一篇
Day17_實作DataCompression查詢篇02
下一篇
Day19_使用DMV(Dynamic Management View)監控記憶體
系列文
SQL SERVER 2008效能監控與最佳化30

尚未有邦友留言

立即登入留言