写点什么

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

  • 2015-06-14
  • 本文字数:1051 字

    阅读完需:约 3 分钟

非聚集列存储索引(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 读者交流群)。

2015-06-14 05:172228
用户头像

发布了 428 篇内容, 共 201.0 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

oeasy 教您玩转 linux 010214 画面转文字 asciiview

o

音乐创作者必备软件,轻松玩转原创

奈奈的杂社

音乐制作 编曲 电音 作曲 乐团

开源决策树工具xDecision简介

赫杰辉

决策树 可视化 简化代码

彻底理解JavaScript执行上下文

Walker

Java 大前端 this指针 函数执行

区块链技术最重要价值所在

CECBC

区块链 数字经济 互联网革命

如何搭建第一个 Spring 项目?

小齐本齐

spring Spring Framework Spring Bean

python——深入类和对象

菜鸟小sailor 🐕

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者联盟

gpu caffe

知识点总结

Acker飏

@所有人 Flink Forward Asia 2020 向您发出议题征集邀请!

Apache Flink

flink

有关 HashMap 面试会问的一切

小齐本齐

Java 数据结构 算法

Java String 面面观

keaper

Java string pool string

SpringBoot写后端接口,看这一篇就够了!

华为云开发者联盟

后端 swagger pringboot

区块链合约层是一种自动执行的数字协议

CECBC

区块链 智能合约

一次代码评审,差点过不了试用期!

小傅哥

Java 小傅哥 代码质量 代码优化 代码规范

设计模式只是一把锤子

博文视点Broadview

读书笔记 编程 面向对象 设计模式

如何让知识图谱告诉你“故障根因”

华为云开发者联盟

华为云 知识图谱 图谱

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

区块链技术与我们的生活将并存

CECBC

区块链 数字经济

如何正确设置Java.home

谷鱼

区块链交易系统开发,期货合约平台搭建

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

Js 封装:阻止频繁重复操作

程序员与厨子

所见即所得的用户增长技术背后是如何实现的

代立冬

大数据 用户增长 用户增长技术 ad-hoc技术

架构师期末作业

傻傻的帅

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

大头星

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者联盟

命令行 游戏 斗地主

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

E科讯

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

SQL Server 2016 —— 可更新的非聚集列存储索引_架构_Jonathan Allen_InfoQ精选文章