我正在使用[vColumnstoreDensity]
它来监视我的列存储索引的运行状况。
我注意到我有一个看起来很奇怪的索引。
据我了解,列存储索引将在开始下一个行组之前填充一个行组。为了获得最佳索引性能,更完整的行组更好。
说了这么多之后,我有一张表格我很难理解。即使在使用最大资源类重建索引(为构建过程提供可能的最大内存量)之后,[vColumnstoreDensity]
视图仍将此索引显示为分布在许多部分完整的行组中。
COMPRESSED_rowgroup_count
4936
COMPRESSED_rowgroup_rows
2693512978
COMPRESSED_rowgroup_rows_MIN
468
COMPRESSED_rowgroup_rows_MAX
739443
COMPRESSED_rowgroup_rows_AVG
545687
编辑:
这是聚集列存储索引。
有一个扩展事件会在列存储组被“剪切”时触发,我认为该事件是
column_store_index_build_process_segment
. 此事件将有一个“修剪”原因,您应该寻找两个可能的修剪原因:当然,要捕获此事件,您需要在索引构建期间设置 XE 会话(链接的文章显示了如何操作)。
您还可以查看构建后的工件,特别是字典,并查看与小段关联的辅助字典是否已达到完整大小 (16Mb)。这将指示 trim 成为完整字典的可能原因。