HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

平价 Vision Pro 需搭配 Mac/iPhone;OpenAI 收购实时分析数据库公司丨 RTE 开发者日报

声网

智心顾问:为心智障碍家庭带来温暖与专业支持

有道技术团队

#人工智能

告别数据烦恼,如何一键搞定数据归档与清理?

NineData

数据归档 NineData 清理功能 时区选择 字段支持

win版JetBrains DataSpell2024 数据科学家开发环境 v2024.1.3中文特别版

iMac小白

Trapcode Particular for Mac(AE 3D粒子系统插件)

Mac相关知识分享

插件 图形设计

Royal TSX for Mac(强大的远程管理软件)

Mac相关知识分享

桌面管理软件

5分钟了解LangChain的路由链

快乐非自愿限量之名

数据库

阿里巴巴中国站关键字搜索API返回值分析:电商数据驱动的渠道拓展与整合

技术冰糖葫芦

API Explorer API 文档 API 管理 pinduoduo API

数字化转型下的企业人力资源信息系统研究

不在线第一只蜗牛

人力资源 低代码 数字转型

用云手机可以做tiktok吗?

Ogcloud

TikTok 云手机 海外云手机 tiktok云手机 tiktok运营

Redis Desktop Manager for Mac(Redis桌面管理工具) v2022.5.0中文版

Mac相关知识分享

可视化工具 mac软件下载

你还在手动操作仓库?这款 CLI 工具让你效率飙升300%!

Immerse

GitHub gitee 仓库 del-repos

Tampermonkey for Mac(油猴Safari浏览器插件) 4.20.6184 中文版

Mac相关知识分享

脚本管理 插件下载

AlDente Pro for Mac(电池最大充电限制软件

Mac相关知识分享

Mac Mac软件 电池软件

一会一展一赛,共绘 AI 新篇章!和鲸出席 GAITC 2024 全球人工智能技术大会

ModelWhale

人工智能 AI技术

企业级低代码开发效率变革赋能业务增长

EquatorCoco

低代码 数智赋能

Axure RP 9 for Mac(原型设计软件)

Mac相关知识分享

Axure RP 9 设计软件

DNS解析失败是什么意思?DNS解析失败怎么办?

国科云

数据产品经理的发展与现状(二)

松子(李博源)

#数据产品经理

win版JetBrains GoLand 2024(Go语言集成开发环境) v2024.1.4中文特别版

iMac小白

软件测试学习笔记丨JUnit5超时处理

测试人

软件测试

聚力教研共成长!思腾合力携手昇腾AI打造人工智能云平台

Geek_2d6073

Altair 人工智能技术助力MABE预测消费者行为,实现设备性能优化

Altair RapidMiner

人工智能 AI 算法 数据分析 预测分析

基于Istio服务网格的熔断限流实现

inBuilder低代码平台

WatchDog:一款.NET开源的实时应用监控系统

不在线第一只蜗牛

.net 开源 开源软件

win版JetBrains RubyMine 2024(Rails/Ruby集成开发环境) v2024.1.4中文特别版

iMac小白

GPU云服务器是什么?有什么用途?

Ogcloud

云计算 gpu 云服务器 GPU云服务器

Illustrator 2023((ai2023)下载激活安装,支持win版和mac版

你的猪会飞吗

ai2023 AI2023下载

云原生技术领域的探索与实践

快乐非自愿限量之名

云原生

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