如何改进列存储索引扫描

时间:2016-06-09 08:54:11

标签: sql-server performance-testing query-performance columnstore

任何人都可以告诉哪些数据库服务器属性会影响列存储索引批处理执行吗?

1 个答案:

答案 0 :(得分:1)

正如所提出的那样,这个问题是广泛的。有许多“数据库服务器”属性会影响批处理执行。一个显而易见的问题是database compatibility level,巫文文档对批量执行的影响:

  

等级 120

     
      
  • 具有Columnstore索引的表上的排序处于行模式

  •   
  • 窗口函数聚合以行模式运行,例如LAG或LEAD

  •   
  • 对具有多个不同子句的Columnstore表进行查询   在行模式

  •   
  • 在MAXDOP 1下运行的查询或在Row中执行的串行计划   模式

  •   
     

等级 130

     
      
  • 具有Columnstore索引的表上的排序现在处于批处理模式

  •   
  • 窗口聚合现在以批处理模式运行,例如LAG或LEAD

  •   
  • 对具有多个distinct子句的Columnstore表进行查询   在批处理模式下

  •   
  • 在Maxdop1下运行或使用串行计划运行的查询在批处理中执行   模式

  •   

这只是冰山一角。 “DB服务器属性”的另一个示例是traceflag 4199,它影响了许多查询优化器修复,有些与批处理模式相关。可用服务器内存影响批处理模式可用的CPU数量会影响批处理模式。数据大小和基数估计会影响批处理模式。

所以,实际上,你必须将问题缩小到具体的范围。

至于标题问题,“如何改进列存储扫描”,最大的优势就是消除分段。阅读Understanding Segment Elimination

但是,首先,要了解如何解决性能问题。阅读How to analyse SQL Server performance。根本导致你的问题。您可能需要更多RAM,而不是不同的索引。测量