BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SQL Server 2016 —— 可更新的非聚集列存储索引

| 作者 Jonathan Allen 关注 615 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年6月15日. 估计阅读时间: 3 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

非聚集列存储索引(NCC Index)在SQL Server 2016中也得到了一定程度的功能增强,其中最引人注目的一条在于可以对其进行更新了。

非聚集列存储索引功能最早出现在SQL Server 2012中,它的设计目的是为普通的堆或B树表提供一种只读的快照。它的设想是对其进行定期的删除与重建,可以以每个晚间或每一周作为维护周期。作为一种替代方式,你也能够通过分区切换加载更多的数据。

在SQL Server 2014中出现了聚集列存储索引(CC Index),这种列存储引擎的功能得到了升级,能够支持数据更改。但这种功能并未在NCC索引中得到延续,后者的能力依然仅限于快照模式而已。

在2016版本中,这一条限制终于被完全取消了。实际上,NCC索引在默认情况下就是可更新的。如果你仍然希望使用原始的快照方式,那么必须将该索引保存在一个只读的文件组中。

筛选索引

如果你确信只需要一个经过良好定义的数据子集,那么筛选索引能够极大地减少所需的磁盘空间。并且在许多情况下,筛选也能够加速性能。

在SQL Server 2016中NCC索引的另一个新特性是能够对索引定义应用筛选条件,这一点只能够用于非聚集列存储索引,而聚集列存储索引与内存优化表仍然需要包括完整的索引定义。

批量模式增强

批量模式处理是一个非常神秘的主题,只有当你理解SQL Server解释器的工作原理时才能够充分利用它。如果你对这一主题还不熟悉,请阅读Chris Adkin的系列文章“了解SQL Server批量模式的底层知识”。简单来说,批量模式比起一次处理一条记录的速度至少快两倍,但并不是在所有情况下都能够使用这一模式的。

如果你正在运行13.0兼容模式(即SQL Server 2016),那么以下这些操作就可以选择使用批量模式。

  • 排序
  • 对多个不同函数进行聚合:例如COUNT/COUNT、AVG/SUM、CHECKSUM_AGG、STDEV/STDEVP
  • 开窗聚合函数:COUNT、COUNT_BIG、SUM、AVG、MIN、MAX,以及CLR
  • 开窗用户自定义聚合:CHECKSUM_AGG、STDEV、STDEVP、VAR、VARP,以及GROUPING
  • 开窗聚合分析函数:LAG< LEAD、FIRST_VALUE、LAST_VALUE、PERCENTILE_CONT、PERCENTILE_DISC、CUME_DIST、以及PERCENT_RANK

在SQL Server 1014中,批量模式只限于并行查询使用,而现在它也可以用于单线程的工作了。

查看英文原文:SQL Server 2016: Updatable, Non-Clustered Columnstore Indexes


感谢张龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT