-
行式存储: 数据按照行的顺序存储。例如,一张表有多列(如姓名、年龄、性别、地址),在行式存储中,每一行的所有数据会存储在一起。它的优势在于对单行数据的读取速度较快,适用于频繁的插入和更新操作。
示例(行式存储):
- 第1行:[张三, 30, 男, 北京]
- 第2行:[李四, 25, 女, 上海]
- 第3行:[王五, 28, 男, 广州]
-
列式存储: 数据按照列的顺序存储。与行式存储不同,列式存储将同一列的数据放在一起存储。列式存储的优势在于查询性能,尤其是在只需要读取部分列的场景中,它可以大大减少数据读取量。
示例(列式存储):
- 姓名列:[张三, 李四, 王五]
- 年龄列:[30, 25, 28]
- 性别列:[男, 女, 男]
- 地址列:[北京, 上海, 广州]
列式存储的优势
高压缩比:
因为同一列的数据通常具有相似性(例如年龄列中的数字都是整数,性别列中只有“男”或“女”),所以列式存储能够更有效地压缩数据。通过将类似的数据压缩在一起,列式存储可以节省大量的存储空间。
减少非相关数据的扫描:
在数据分析中,你通常只需要查询某几列数据,而不是整行数据。列式存储让你只读取需要的列,不需要扫描整个表中的所有数据。这不仅减少了I/O操作,还节省了CPU处理不相关数据的时间。
假设你有一个包含数百列的表格,但你只想查询“年龄”列。使用列式存储,你只需要读取“年龄”这一列的数据,而行式存储则需要读取整行数据再提取“年龄”。
更有效利用 IO 和 CPU 资源:
由于只读取和处理相关的数据列,列式存储减少了磁盘I/O操作,节省了系统资源。同时,压缩的数据更容易在内存中操作,进一步提高了查询效率。
通俗举例
想象你有一个巨大的图书馆,其中每本书都分为几章(对应表的列)。行式存储就像是按整本书摆放,查找某一章内容时,需要翻开整本书。而列式存储就像是把所有书的同一章内容都集中在一起,这样你只需去查找你需要的那一章内容,而不用翻开每本书的其它部分。