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模式下運行,而且支持併發查詢。