本篇主要測試DataCompression對查詢資料的實際影響
實作新增資料時DataCompression對Index的影響。
在Day12_淺談Index與DataCompression有提到啟用DataCompression選項會影響查詢效能。
本篇主要測試DataCompression對查詢資料的實際影響。
步驟一:建立測試資料
IF OBJECT_ID('TransactionHistoryCopy') IS NOT NULL
BEGIN
DROP TABLE TransactionHistoryCopy
END
GO
--建立測試的Table
CREATE TABLE TransactionHistoryCopy(
[TransactionID] [int] NOT NULL,
[ProductID] [int] NOT NULL,
[ReferenceOrderID] [int] NOT NULL,
[ReferenceOrderLineID] [int] NOT NULL,
[TransactionDate] [datetime] NOT NULL,
[TransactionType] [nchar](1) NOT NULL,
[Quantity] [int] NOT NULL,
[ActualCost] [money] NOT NULL,
[ModifiedDate] [datetime] NOT NULL)
GO
--建立測試資料
INSERT INTO TransactionHistoryCopy
SELECT * FROM AdventureWorks.Production.TransactionHistory
GO
步驟二:測試資料查詢
資料查詢測試一:不做任何資料壓縮
--清除CACHE
DBCC DROPCLEANBUFFERS
--測試查詢效能
SELECT * FROM TransactionHistoryCopy
執行結果:
邏輯讀取是790,經過時間是1394ms,CPU時間是46ms
資料查詢測試二:啟用DATA_COMPRESSION=ROW
邏輯讀取是508,經過時間是1376 ms,CPU時間是141 ms
資料查詢測試三:啟用DATA_COMPRESSION=PAGE
邏輯讀取是286 ms,經過時間是1366 ms,CPU時間是266 ms
資料查詢測試結果:
結論:當啟用DATA_COMPRESSION時,在查詢資料的時候會較消耗CPU的資源,但是相對邏輯讀取則減少,整體的經過時間減少了,這表示在這個CASE啟用DATA_COMPRESSION時增加的效能(減少IO)大於使用的資源(CPU運算)。此外我也另外測了不同資料筆數使用DATA_COMPRESSION的情況,測試結果將在下一篇揭曉。