← AI 术语表

AI 术语表 · 进阶 · 数据工程

列式存储

列式存储是一种把表格数据按列(字段)而不是按行(一条记录)集中存放的方式。它能让只读取少数几列来计算总和、平均值的分析任务变得快得多、便宜得多。

关于这个术语
难度
进阶 · 需要了解内部原理的专业术语
加入时间
2026-10-09
通俗解释 如果把学生成绩按每个学生一张卡片保存,想算“数学平均分”就得翻遍所有卡片;如果按科目名单保存,只看数学那一张名单就够了。代价是每新增一名学生,都要修改所有科目的名单。

工作原理

普通数据库把一位客户的姓名、年龄、地址、注册日期连在一起存成一行。列式存储则把姓名和姓名放在一起、年龄和年龄放在一起,分别存放。因此计算“平均年龄”时只读年龄这一列,其余数据都不用碰。同一列中相似的值集中在一起,压缩效果也好,从磁盘读取的数据量会进一步减少。

行式存储与列式存储

行式存储一位客户 = 一行

  • 单条新增·修改快
  • 即使只算一个平均值也要读取所有列
  • 交易处理数据库

列式存储一列 = 一个块

  • 只读取需要的列
  • 相似值聚在一起,压缩效果好
  • 不利于逐条写入
区别在于同一张客户表如何分组存放。分析时右边更有利,逐条写入时左边更有利。

为什么重要

分析类查询通常只读少数几列,却要读非常多的行。列式存储正是针对这种模式设计的,因此成为数据仓库和 OLAP 系统的默认存储方式。Parquet 等列式文件格式在数据湖中几乎是标准,也常用于保存和筛选 AI 训练数据。读取量减少后,云上按扫描量计费的成本也会随之下降。

注意事项

它不适合逐条写入和修改的操作,因为新增一行就要改动多个列块。所以系统通常会先把新数据暂存起来,再批量写入,以弥补这一弱点。很多情况下会分开使用:服务的实时交易记录放在行式数据库中,分析则放在列式存储中。

示例

数据团队要从数亿条网页日志中只取“日期”和“页面”两列来统计每日访问量时,如果日志以 Parquet 等列式文件保存,只需读取这两列即可。从公开仓库下载 LLM 训练数据集时,数据常以 Parquet 文件提供,也是出于同样的原因。

相关术语