写点什么

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

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

关注

评论

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

用Apipost进行Websocket调试教程

不想敲代码

微服务 websocket 接口调试

堡垒机真的安全吗可靠吗?大家喜欢哪款?

行云管家

等保 堡垒机 等级保护 堡垒机品牌

婚庆LED显示屏打造梦幻婚礼

Dylan

LED显示屏 led显示屏厂家 户内led显示屏

助力芯片产业蓬勃发展,诚翔滤器推出光刻机过滤器

电子信息发烧客

从焊接角度聊一聊,设计PCB的5个建议

华秋PCB

工具 PCB PCB设计 焊接

用 AI 取代人工?或许 LLMs 可以给你答案

鼎道智联

#人工智能

架构作为6

梁山伯

共赴元宇宙新纪元,华为云VR开发应用大赛总决赛倒计时7天!

华为云开发者联盟

人工智能 华为云 VR开发应用 企业号 2 月 PK 榜 华为云开发者联盟

云原生微服务技术趋势解读

阿里巴巴中间件

阿里云 开源 微服务 云原生

简单好上手!1分钟带你体验Apipost

叶小柒

drools规则动态化实践

京东科技开发者

Java 规则引擎 业务逻辑 企业号 2 月 PK 榜 drl

工赋开发者社区 | 达摩院开源半监督学习框架Dash,刷新多项SOTA

工赋开发者社区

开源工具系列3:Prowler

HummerCloud

云安全

版本控制 | 如何利用虚幻引擎进行虚拟制作,为电影制作带来更多可能

龙智—DevSecOps解决方案

游戏引擎 虚幻引擎 虚幻引擎5 虚拟制作

JVM参数:带你认识-X和-XX参数

华为云开发者联盟

开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

技术交错革新,移动开发平台机会和挑战并存

FinFish

移动开发 移动开发平台 移动应用开发

KCL 与其他 Kubernetes 配置管理工具的异同 - Helm 篇 - Helm 篇 [一个自研编程语言能做什么?(系列 3)]

Peefy

Kubernetes DevOps 编程语言 #开源

“堆外内存”这玩意是真不错,我要写进简历了。

why技术

Java 程序员 面试

对比开源丨Prometheus 服务多场景存储压测全解析

阿里巴巴中间件

阿里云 云原生 Prometheus

DiffusionDet 用扩散模型解决目标检测

Zilliz

SAP的良好业绩,能否敲响国内厂商的警钟?

ToB行业头条

Dubbo 3 之 Triple 流控反压原理解析

阿里巴巴中间件

阿里云 微服务 云原生

ITSM | Atlassian被Gartner评为IT服务管理平台魔力象限的领导者

龙智—DevSecOps解决方案

Atlassian ITSM Gartner

简单了解下linux与windows两者的区别-行云管家

行云管家

Linux

2023计算机领域顶会(A类)以及ACL 2023自然语言处理(NLP)研究子方向领域汇总

汀丶人工智能

人工智能 自然语言处理 2月日更 计算语言学协

C++数据结构

老浩

前端leetcde算法面试套路之树

js2030code

JavaScript LeetCode

用javascript分类刷leetcode21.树(图文视频讲解)

js2030code

JavaScript LeetCode

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

落地DevOps的路线图

老张

DevOps 软件工程

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