列式存储
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近看到一篇很好资料,里面三言两语配上几个图就把列式存储(Column-based
Storage)讲明白了,牛啊!最喜欢的就是这种浅显易懂就把背景知识讲得明明白
白,而不是长篇大论的讲概念。
1 为什么要按列存储
列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。
简单来说两者的区别就是如何组织表(翻译不好,直接抄原文了):
Ø Row-based storage stores atable in a sequence of rows.
Ø Column-based storage storesa table in a sequence of columns.
下面来看一个例子:
从上图可以很清楚地看到,行式存储下一张表的数据都是放在一起的,但列式存
注:关系型数据库理论回顾 - 选择(Selection)和投影(Projection)
3查询执行性能
下面就是最牛的图了,通过一条查询的执行过程说明列式存储(以及数据压缩)的优点:
关键步骤如下:
1.去字典表里找到字符串对应数字(只进行一次字符串比较)。
2.用数字去列表里匹配,匹配上的位置设为1。
3.把不同列的匹配结果进行位运算得到符合所有条件的记录下标。
4.使用这个下标组装出最终的结果集。