1. 行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的。
  2. 非聚集的列存储索引支持筛选条件。
  3. 在内存优化表中可以有一个列存储索引,可以在创建表的时候创建,也可以在之后的alter table语句上创建。之前内存优化表不支持列存储索引。
  4. 聚集的列存储索引可以有多个非聚集行存储索引,之前列存储索引不支持非聚集索引。
  5. 支持在聚集列存储索引上加入主键和外键约束,约束使用btree索引。
  6. 列聚集索引有一个压缩延迟选项,让事务复合收到的影响最小。

 


兼容级别为120,130的数据库性能:



  1. 列存储索引支持读提交快照隔离级别和快照隔离级别。这样可以让查询保持事务一致性,并且不加锁
  2. 列存储索引不需要通过重建索引来清理删除的行,可以通过alter table……reorganize语句来清理
  3. 列存储索引可以在alwayson readable secondary replica中访问。
  4. 为了提升性能,SQLServer在表扫描的时候会为小于8字节的列计算最大,最新,合计,计数,平均值聚合会被pushdown。
  5. 在比较字符串类型的时候,条件会被pushdown来提高查询速度。

 



兼容级别为130的数据库性能:



  1. 新的batch模式支持一下操作:
  • SORT
  • 多个聚合函数
  • Windows 聚合函数
  • Windows用户定义的聚合
  • windows聚合分析函数
  1. 单线程查询可以运行在batch mode
  2. 当访问的数据是行存储或者列存储,内存优化表查询可以在InterOp模式下并行

 



支持:

These system views are new for columnstore: 
    
 
    

      - sys.column_store_row_groups (Transact-SQL) 
    
 
    

      - sys.dm_column_store_object_pool (Transact-SQL) 
    
 
    

      - sys.dm_db_column_store_row_group_operational_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_column_store_row_group_physical_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_index_operational_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_index_physical_stats (Transact-SQL) 
    
 
    

      - sys.internal_partitions (Transact-SQL) 
    
 
    

        
    
 
    

      These in-memory OLTP-based DMVs contain updates for columnstore: 
    
 
    

      - sys.dm_db_xtp_hash_index_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_xtp_index_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_xtp_memory_consumers (Transact-SQL) 
    
 
    

      - sys.dm_db_xtp_nonclustered_index_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_xtp_object_stats (Transact-SQL) 
    
 
    

      - sys.dm_db_xtp_table_memory_stats (Transact-SQL)



限制:



  1. 当btree索引定义在聚集列存储索引时,MERGE被禁用。
  2. 对于内存优化表,列存储索引必须包含所有的列,也不能使用筛选。
  3. 对于内存优化表,列存储索引只能在InterOp模式下运行,并且支持并发查询。