把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

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:052855
用户头像

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

关注

评论

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

ARTS 打卡 第一周,初试ARTS

三掌柜

ARTS 打卡计划

高性能MySQL实战(三):性能优化 | 京东物流技术团队

京东科技开发者

京东云 企业号9月PK榜

英文阅读 The manager's path 1.3

程序员在修行

关于身心灵学习的感悟1

程序员在修行

云迁移?是技术问题也是团队问题

在天涯的海角

如何赋能企业数字化转型?华为云有妙招

YG科技

使用消息队列有什么优点?有什么缺点?

程序员在修行

ARTS 打卡第四周

程序员在修行

跨平台混合应用:用户和开发者的新选择

没有用户名丶

初露头角!Walrus入选服贸会“数智影响力”数字化转型创新案例

SEAL安全

企业数字化转型 数智化 企业号9月PK榜 中国国际服务贸易协会

SPI在Java中的实现与应用 | 京东物流技术团队

京东科技开发者

Java spi 京东云 企业号9月PK榜

分库表数据倾斜的处理让我联想到了AKF模型 | 京东云技术团队

京东科技开发者

数据库 京东云 企业号9月PK榜

MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响

GreatSQL

greatsql mgr

2024第二十三届浙江国际智能楼宇技术与智慧安防产品展览会

AIOTE智博会

智慧楼宇展 安防展 智慧安防展

数据通信网络之IPv6以太网单臂路由

timerring

数据通信网络

828 B2B企业节,华为云如何提升生态合作伙伴的综合竞争力?

YG科技

与中小企业共生共赢,华为云B2B企业节来了

YG科技

Scrum Master,这九个问题你问了吗?

敏捷开发

项目管理 敏捷开发 团队协作 Scrum Master

分布式锁的3种实现!附代码

王磊

Java

“源聚一堂”开源技术沙龙济南站顺利举办

inBuilder低代码平台

开源 低代码

企业综合信息化,人力资源管理,培训考学管理,电子采购(源码系统)

金陵老街

java;

从实时监控到智能洞察:Grafana 和 CnosDB 的无限潜力

CnosDB

时序数据库 开源社区 CnosDB

2024第八届浙江智慧城市与智能建筑产品博览会

AIOTE智博会

智慧城市展 智能建筑展

使用 NGINX Unit 实施应用隔离

NGINX开源社区

Unit 应用隔离

星耀数字中国,先要存下宇宙山河

脑极体

存储

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