正确维护SQLServer群集列存储索引的方法

时间:2019-02-15 13:11:33

标签: sql-server indexing fragmentation columnstore

集群列存储索引维护

我们在SqlServer 2016中为400M行使用群集的列存储索引。我们检查样本选择查询的时间-索引创建后仅2秒。一个月后,相同的查询最多需要20到30秒。总碎片率为96%,页面填充度为66%,平均行大小为20,深度为3。重组索引可使碎片减少1%。无法重建,因为我们需要使所有数据联机。我们每天插入1M行。有什么想法吗?

如何获得与初始查询类似的查询性能?

1 个答案:

答案 0 :(得分:0)

  

有什么想法吗?

问题可能归因于增量存储开销。我们在SQL Server 2016上遇到了类似的问题,并且完全重建解决了一段时间。建议:

  • 使用分区,可能每月一次或每两周一次
  • 在分区级别上重建索引,这可以显着减少维护时间。晚上进行重建。
  • 等待使用SQL Server 2019,MS会在此版本中在线重建列存储索引
  

重组索引可使碎片减少1%

它是用COMPRESS_ALL_ROW_GROUPS执行的吗?

ALTER INDEX idx_cci ON table  REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON); 
ALTER INDEX idx_cci ON table  REORGANIZE;

参考文献:

相关问题