写点什么

SQL Server 2011 中基于列的存储方式

  • 2011-03-14
  • 本文字数:827 字

    阅读完需:约 3 分钟

和大多数主流数据库一样,如果表拥有聚集索引,那么 SQL Server 就会以 B- 树的方式存储,否则就会使用的方式存储。这两种方法本质上都是基于行的,其中每页中行的条数会根据总体上行的大小不同而不同。从SQL Server 2011 开始,微软为我们提供了第三种选择。SQL Server 会提供一种“列存储索引”,从而以列而不是行的方式来存储数据。

当使用数据规模为1TB、记录条数为十四亿四千万的表时,微软声称基于列的查询在CPU 时间上会有16 倍的提升,而在使用时间上会有455 倍的提高。在真实情况下,这意味着本来要耗费501 秒的查询,现在只需要1.1 秒就可以完成了。这项测试是在拥有32 个逻辑处理器和256GB 内存的计算机上执行的。

微软把每个列都隔离在自身的一组页中,从而达到了这种惊人的改善。当执行查询的时候,只会从磁盘载入位于结果集中的列。而包含其它列的页会被忽略。

这种方法相当于为每种我们所能想象到的列组合创建替代索引。然而,这种方式不会消耗大量的磁盘空间,它实际上会比传统的表占用更小的空间。由于SQL Server 的压缩会发生在页级别上,并且和行相比,列中的数据更容易重复,所以使用列存储索引的表将会拥有更高的压缩等级。

但暂时我们还不能轻易决定使用列存储索引。首先也是最重要的,它们是不可更新的。一旦创建了列存储的索引,那么就不允许在表上执行插入、更新或者删除等操作了。微软期望更多商店每天对数据进行刷新,否则就需要把数据做只读处理。在刷新周期中,我们会删除索引,更新数据,然后再重新建立索引。由于这肯定是代价昂贵的操作,所以我们可以使用垂直分区来把操作限制到逻辑表的子集范围内。

使用列存储的索引也会导致性能的降低。如果你使用大多数列,那么重新组合行会耗费大量的资源。这意味着OLTP 样式的查询应该避免这种方式,而对于OLAP 形式的查询,这种方式会比较有利。或者换句话说,如果你在编写“SELECT *”或者每次抓取一行数据,那么列存储索引就不适合你。

查看英文原文: Column-based Storage in SQL Server 2011

2011-03-14 07:052843
用户头像

发布了 340 篇内容, 共 145.3 次阅读, 收获喜欢 13 次。

关注

评论

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

Java 类构造函数的调用顺序

michaelliu

Java

屏幕适配插件:ScreenMatch基本使用和注意事项

Arch

LeetCode 120. Triangle

隔壁小王

算法 LeetCode

Flink State 最佳实践

Apache Flink

大数据 flink AI 流计算 实时计算

聊聊技术人如何与甲方客户打交道

MavenTalker

程序员 程序人生 职业规划

Java 类

michaelliu

Java

经验可能反而阻碍你的新认知

孙苏勇

思考 读书

Flink SQL 的 9 个示例

Apache Flink

大数据 flink 流计算 实时计算

原创 | DDD与分层

编程道与术

PyFlink 社区扶持计划正式上线!

Apache Flink

大数据 flink 流计算 实时计算

最佳实践 | Flink Forward 全球会议抢先看!

Apache Flink

大数据 flink AI 流计算 实时计算

转任管理岗位后,还要不要从事编码工作?

MavenTalker

团队管理 程序员 个人成长 职业规划

工厂模式

Wen Wei

设计模式

你的文章中为什么会有加粗的文字

小天同学

思考 写作 感悟

关于PHP内存溢出的思考

L

php

作为程序员,有哪些写作平台值得推荐 ?B站也算吧

邓瑞恒Ryan

学习 创业 写作 知识管理 自我提升

原创 | OOAD范例:配置类设计

编程道与术

初文,大浪淘沙

傅丞 Tony

Flink 的经典场景和业务故事有哪些?看看他们就知道了

Apache Flink

大数据 flink 流计算 实时计算

我入驻InfoQ平台啦

BlueblueWings

在InfoQ开启写作之旅

张先亮-Hank

人工智能 随笔

技术人员能力养成手记

MavenTalker

个人成长 程序人生 职业规划

Java 代码的组织机制

michaelliu

Java

Flink 消息聚合处理方案

Apache Flink

大数据 flink 流计算 实时计算

Iceberg 在基于 Flink 的流式数据入库场景中的应用

Apache Flink

大数据 flink 流计算 实时计算

18个PPT,29个提问解答,都在这儿啦!

Apache Flink

大数据 flink 流计算 实时计算

哈希,茫茫人海,我一眼看到了你

dongge

docker搭建lamp

刘磐石(刘坤鹏)

什么是全光架构?光纤KVM和分布式IP KVM系统知多少?

DT极客

vue项目中遇到的依赖及其他问题

靖仙

Vue 大前端 Web

祝贺!两位 Apache Flink PMC 喜提 Apache Member

Apache Flink

大数据 flink 流计算 实时计算

SQL Server 2011中基于列的存储方式_.NET_Jonathan Allen_InfoQ精选文章