SQL2014開始提供新的壓縮類型,名為資料行存放區封存(columnstore_archive)
針對資料行存放區資料表和索引,你可以使用封存壓縮來處理較少活動分區,以利減緩硬碟空間用量
這篇我簡單測試這項新技術是否能大幅減緩空間用量
create table testCOLUMNSTORE_ARCHIVE
(id int identity (1,1),
data varchar(20))
insert into dbo.testCOLUMNSTORE_ARCHIVE values('ricoisme')
go 300000
ALTER TABLE testCOLUMNSTORE_ARCHIVE REBUILD
SP_SPACEUSED testCOLUMNSTORE_ARCHIVE
使用7496 kb
create index idx1 on testCOLUMNSTORE_ARCHIVE(id)
include(data)
建立非叢集索引後,總共使用16608 kb
drop index idx1 on testCOLUMNSTORE_ARCHIVE
create nonclustered columnstore index csidx1
on testCOLUMNSTORE_ARCHIVE(id,data)
with (DATA_COMPRESSION = columnstore_archive);
刪除非叢集索引後,建立資料行存放區索引並使用資料行存放區壓縮,總共使用8856 kb,和非叢集索引相比,空間使用率大約減少了50%左右。
alter index csidx1 on testCOLUMNSTORE_ARCHIVE
rebuild with ( DATA_COMPRESSION = COLUMNSTORE );
改為一般存放區壓縮,空間使用率也很低。
物件 |
使用空間總大小 |
壓縮類型 |
資料表 |
7496 KB |
無啟用 |
非叢集索引 |
16608 KB |
無啟用 |
非叢集資料行存放區索引 |
8856 KB |
columnstore_archive |
非叢集資料行存放區索引 |
8920 KB |
columnstore |
測試資料行存放區封存壓縮遠大於資料頁和列壓縮,該技術大部分會搭配partition table來封存較少使用的分區,以利減少空間使用量,但較常活動的分區不建議使用壓縮以免影響到效能。
參考