在guide to creating columnstore indexes中有一个有关COMPRESSION_DELAY
选项的段落。
COMPRESSION_DELAY = 0 |延迟[分钟]
对于基于磁盘的表,延迟指定最小分钟数 处于CLOSED状态的增量行组必须保留在增量行组中 SQL Server可以将其压缩到压缩的行组中。以来 基于磁盘的表不跟踪单个表的插入和更新时间 行,SQL Server将延迟应用于CLOSED中的增量行组 州。默认值为0分钟。
我不明白CLOSED state
,rowgroup
和delta rowgroup
的确切含义。有人可以向我解释一下吗?
答案 0 :(得分:1)
SQL Server的列存储格式垂直组织为行组(rowgroups
)。
数据可以采用COMPRESSED
形式或BTree-s形式。
COMPRESSED
行组是不可变的,并且使用其他结构来跟踪更新(删除位图等)。压缩的行组占用的空间更少,并且可以更快地对它们进行聚合,这样可以大大提高吞吐量。
压缩形式仅在一定数量的行以上才快速,否则最好以行存储格式-aka。三角洲商店。一旦超过此阈值,这些行就会在后台迁移为压缩形式。
CLOSED
状态表示此行组已达到要压缩的阈值,并且正在等待压缩。没有新行添加到该行组,但是删除可以从中删除行。如果行数低于最小值栏,则可以再次对行组进行OPEN
编辑,这样它就可以接受新的传入行。
有关更多详细信息,请查看official documentation,Niko's blog或Remus' blog。