[SQL SERVER]SQL2016-Columnstore Indexes增強(5)

SQL2016 SP1增強In-Memory資料表新增Columnstore效能。

SQL2016新增Columnstore Index至In-Memory資料表相當費時且耗用大量交易紀錄檔,

好消息是SQL2016 SP1快速改善這些問題,這篇簡單測試執行時間和對交易紀錄檔使用率的影響。

create table testColumnstore_Memory
(
id int not null
,sdatetime datetime
,edatetime datetime
,sdate date
,content varchar(300)
,constraint PK_testColumnstore_Memory primary key nonclustered hash(id) with(bucket_count=2000000)
)
with(memory_optimized=on,durability=schema_and_data)

insert into testColumnstore_Memory
select top 2000000 * from testDatetime
checkpoint

--查看目前交易紀錄檔使用空間大小
dbcc sqlperf ('LOGSPACE'); --1.74491 %
go

目前交易紀錄檔使用率1.74491%

--新增Clustered Columnstore
alter table dbo.testColumnstore_Memory
add index testColumnstore_Memory_CCI CLUSTERED COLUMNSTORE;

交易紀錄檔成長約5%,整體花費時間=2039ms、CPU時間=125ms(遠遠低於SQL2016)。

 

先重新刪除in-Memory資料表後再比較新增Nonclustered Hash Index

--新增nonclustered Hash Index
alter table dbo.testColumnstore_Memory
add index testColumnstore_Memory_NCCI NONCLUSTERED HASH 
	(id, sdatetime, edatetime, sdate, content) 
	WITH (BUCKET_COUNT = 2000000);

Note:in-Memory 資料表Clustered Columnstore和Nonclustered Hash無法共存,

目前也不支援Nonclustered Columnstore。

Enjoy SQL Server 2016

 

參考

SQL Server 2016 Service Pack 1 (SP1) released !!!

[SQL SERVER]SQL2016-Columnstore Indexes增強(4)