10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

解析为什么企业出海需要SD-WAN专线

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

GPT-4 Turbo 融合视觉能力;Google 新添 AI 视频应用 Vids丨 RTE 开发者日报 Vol.181

声网

eBPF 开发者大会倒计时!4 月 13 日不见不散

乘云数字DataBuff

智能运维 ebpf Kubernetes, 云原生, eBPF 一体化可观测平台Databuff 云原生运维

软件测试学习笔记丨测试框架体系 TDD DDT BDD ATDD 介绍

测试人

软件测试 测试开发

牛蛙!GoFrame2.7正式版的监控组件真是及时雨

王中阳Go

Go golang 面试题 面经 大厂面经

ETLCloud结合kafka的数据集成

RestCloud

kafka ETL 数据集成

英特尔和Altera发布边缘和FPGA产品,提供FPGA AI套件加速开发者创新

E科讯

2024上海国际智慧物业展览会

AIOTE智博会

智慧物业展 智慧物业展会 智慧物业展览会 智慧物业博览会

RAG 修炼手册|一文讲透 RAG 背后的技术

Zilliz

nlp 向量数据库 LLM rag enbedding

【干货】零售商的商品规划策略

第七在线

基于istio实现单集群地域故障转移

华为云开发者联盟

微服务 istio 华为云 华为云开发者联盟 企业号2024年4月PK榜

选择国外云主机的五大理由以及优劣势分析

一只扑棱蛾子

国外主机

零基础到精通,Postman安装使用教程(一)

霍格沃兹测试开发学社

AMD 以全新第二代 Versal 系列器件扩展领先自适应 SoC 产品组合

财见

探索314协议代币合约开发:解析AVE热搜上币与项目推广

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

人大金仓:国产数据库的领航者,高速公路信息化的创新力量

科技热闻

教你构建一个优秀的SD Prompt

程序那些事

程序那些事 AIGC Stable Diffusion

抓包神器wireshark安装保姆级教程

霍格沃兹测试开发学社

如何设计一个实时数据同步系统

golang redis 系统设计 数据同步

Qt Group与高通公司合作,简化工业物联网的用户界面开发

财见

RUM 最佳实践-交互延迟的探索与发现

观测云

性能优化

NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理

汀丶人工智能

大模型 NL2SQL

实用指南:使用Pytest Allure测试框架添加用例失败截图

霍格沃兹测试开发学社

小红书笔记详情API接口解析:轻松抓取内容数据,提升业务效率

技术冰糖葫芦

API Explorer api 货币化 API】 pinduoduo API

大型连锁企业异地组网稳定性提升指南

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 异地组网 SDWAN

云手机解决海外社媒运营的诸多挑战

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 跨境云手机

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