SQL Server 列存储索引 第二篇:设计 (2)

可以对分区表创建列存储索引,对于每一个分区,都有一个或多个行组,可以认为对每个分区单独创建列存储索引。由于列存储索引对数据量有一个显式的要求,100万行,如果每个分区没有一百万行,那么大多数数据行可能会转到增量存储,而在增量存储中它们将无法获得列存储压缩的性能优势。除非你有足够大的数据量,否则,为列存储索引使用更少的分区。

举个例子:

将100万行加载到一个分区或未分区的表中,您将获得一个包含100万行的压缩行组,这对于高数据压缩和快速查询性能非常有用。

将100万行平均加载到10个分区中,每个分区获得10万行,这比列存储压缩的最低阈值还小,这导致列存储索引可能有10个增量行组,每个组有10万行。

虽然有一些方法可以把增量行组强制进入列存储,但是,如果这些是columnstore索引中仅有的行,则压缩的行组将太小而无法获得最佳的压缩和查询性能。

五,选择合适的数据压缩算法

列存储索引为提供了两种数据压缩的算法:列存储压缩(columnstore compression)和存档压缩(archive compression)。 用户可以在创建索引时选择压缩选项,稍后使用ALTER INDEX ... REBUILD对其进行更改。

1,使用列存储压缩以获得最佳查询性能
与行存储索引相比,列存储压缩通常可实现10倍更好的压缩率。 它是列存储索引的标准压缩方法,可实现快速查询性能。

2,使用存档压缩以获得最佳数据压缩
当查询性能不太重要时,归档压缩旨在最大程度地压缩数据,与列存储压缩相比,它实现了更高的数据压缩率,但代价不菲。 压缩和解压缩数据需要更长的时间,因此不适合快速查询性能。

 

 

参考文档:

Columnstore indexes - Design guidance

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjpfs.html