SQL Server 2016将有哪些功能改进

如题所述

聚集列存储索引(CC
Index)是SQL
Server
2014中两大最引人瞩目的特性之一,设计为用于超过1千万条记录的数据表。使用者无需明确的指定索引,也能够保证分析式查询的优良性能。
但2014版本中的这一特性存在着一个缺陷,即使用者无法指定索引。虽然CC索引比起传统表的表扫描要快得多,但它还是及不上经手动调整的覆盖索引。因此,为了同时支持这两种模式,开发者不得不创建两张表:一张具有B树索引结构的普通表,以及一个使用了聚集列存储索引的表。显然,保持这两张表的同步是一个很大的挑战。
在SQL
Server
2016中,这个问题将不复存在。在兼容级别130(即SQL
Server
2016)中的聚集列存储索引可包含B树风格的二级索引,与传统的数据表一样。这种索引支持任何数量的列,并且可以进行筛选。
聚集列存储索引的另一个问题在于缺乏对于主键和外键的支持。由于数据库无法强制某个CC索引的引用完整性,只能由中间层的开发者保证不会出现数据损坏的情况。如今因为能够在CC索引中加入B树索引,使用者就能够“使用一个B树索引创建主键与外键,从而实现这些限制条件的强制实施”。
警告:“一旦为聚集列存储索引定义了B树索引,就不能够使用MERGE了。”
隔离级别
从SQL
Server
2016开始,CC索引支持快照与读提交快照两种隔离级别了,因而无需再使用读-写锁,也使得频繁写入数据的表的性能表现更为出色。
索引碎片整理
在SQL
Server
2014中的CC索引被设计为主要用于添加数据风格的操作。虽然也能够对记录进行修改和删除操作,但这会产生索引碎片,只有通过重建整个CC索引才能够消除这些碎片。而在2016中,可以通过重新组织索引操作减少碎片。索引的重新组织是一种在线操作,这表示它无需长时间占有锁,因此妨碍对表的查询操作。
批量模式的增强
由于CC索引与非聚集列存储索引使用了相同的存储引擎,因此它的批量模式也同样得到增强。
查看英文原文:SQL
Server
2016:
Clustered
Columnstore
Index
Enhancements
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-10

在使用行级安全时,用户无法看到他们不能访问的行。这就好像在访问表时自动增加一个额外的、安全相关的where子句。

由于其作用像一个where子句,所以有一些局限。

例如,如果用户在那个列上使用了全文搜索索引,那么数据就可能泄露。此外,数据库还可能遭受旁路攻击。微软写道:

通过使用精心设计的查询,可以导致信息泄露。例如,SELECT 1/(SALARY-100000) FROM PAYROLL WHERE NAME=’John Doe’ 会让一个恶意用户知道John Doe的工资是10万美元。即使有一个恰当的安全谓词阻止恶意用户直接查询其它人的工资,他也可以在查询返回“除数为0”的异常时确定工资数额。

此外,信息也可能通过统计对象泄露。为了降低风险,查看受保护列统计信息的用户必须是“表的所

本回答被提问者采纳
相似回答