天天看点

SQL Server 2016新特性:列存储索引新特性

SQL Server 2016新特性:列存储索引新特性

行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的。

非聚集的列存储索引支持筛选条件。

在内存优化表中可以有一个列存储索引,可以在创建表的时候创建,也可以在之后的alter table语句上创建。之前内存优化表不支持列存储索引。

聚集的列存储索引可以有多个非聚集行存储索引,之前列存储索引不支持非聚集索引。

支持在聚集列存储索引上加入主键和外键约束,约束使用btree索引。

列聚集索引有一个压缩延迟选项,让事务复合收到的影响最小。

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

列存储索引支持读提交快照隔离级别和快照隔离级别。这样可以让查询保持事务一致性,并且不加锁

列存储索引不需要通过重建索引来清理删除的行,可以通过alter table……reorganize语句来清理

列存储索引可以在alwayson readable secondary replica中访问。

为了提升性能,SQLServer在表扫描的时候会为小于8字节的列计算最大,最新,合计,计数,平均值聚合会被pushdown。

在比较字符串类型的时候,条件会被pushdown来提高查询速度。

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

新的batch模式支持一下操作:

SORT

多个聚合函数

Windows 聚合函数

Windows用户定义的聚合

windows聚合分析函数

单线程查询可以运行在batch mode

当访问的数据是行存储或者列存储,内存优化表查询可以在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)

限制:

当btree索引定义在聚集列存储索引时,MERGE被禁用。

对于内存优化表,列存储索引必须包含所有的列,也不能使用筛选。

对于内存优化表,列存储索引只能在InterOp模式下运行,并且支持并发查询。