BT

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

SQL Server 2014新聚合columnstore索引介绍

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2013年10月1日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

在SQL Server 2012中,开发者有创建columnstore索引的选项。这些索引拥有提供10x性能提升和超过传统表7x压缩的潜力,但是随之也带来了大量的限制。这其中最重要的是他们将基本表送入只读模式的事实。

SQL Server 2014中的这个新存储引擎克服了这些限制。该引擎被称为聚合columnstore索引,它允许高度有效的列有序的数据,同时还允许表在执行DML操作(例如INSERT、UPDATE和DELETE)的时候正常运作。

就像正常的聚合索引一样,聚合columnstore索引定义了数据在磁盘上是如何物理存储的。columnstore支持的表首先会被组织成称为行组(rowgroup)的片段。每一个行组保存102400到1048578行数据。在行组被识别出来之后,它就会被打碎成列片段(column segments),然后对这些列片段进行压缩,并将结果插入到实际的columnstore中。

在处理少量数据(这里的少量指小于10万行数据)的时候,这些数据会被组织到一个称为deltastore的部分。一旦这些数据达到了deltastore能够将其排出的最小大小,那么它们就会被处理为一个新的行组。你可以从下面的MSDN图表中查看这个过程:

在deltastore进行转换的时候它会被关闭。但是无论如何这并不是一个全表阻塞操作。在当前的deltastore因为锁的原因不能访问的时候,会为给定的表创建一个额外的deltastore。如果表是分区的,那么每一个区都会有它自己的deltastore集。

术语上的注意:Microsoft现在使用“rowstore”表示按照行和列安排的传统表。deltastore实际上是一种类型的rowstore。

和之前版本的columnstore索引不同的是,聚合版本必须包含表中的所有列。这是因为对于剩下的行而言没有其他的堆或者聚合索引去依赖。事实上,聚合columnstore索引根本不能和其他类型的索引结合。

查看英文原文Introducing SQL Server 2014's New Clustered Columnstore Indexes

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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