1.7 KiB
1.7 KiB
title, type, tags, sources, last_updated
| title | type | tags | sources | last_updated | ||||
|---|---|---|---|---|---|---|---|---|
| Columnar Storage | concept |
|
|
2026-04-23 |
Overview
列式存储(Columnar Storage)是一种数据存储格式,数据按列而非按行组织。专为分析型工作负载(OLAP)设计,相比传统行式存储能显著提升聚合查询和全表扫描性能,同时降低存储空间需求。
How It Works
行式存储按行存储:[row1_col1, row1_col2, row1_col3, row2_col1, row2_col2, row2_col3, ...]
列式存储按列存储:[col1_row1, col1_row2, ..., col2_row1, col2_row2, ..., col3_row1, col3_row2, ...]
Key Advantages
- 查询性能:只需读取查询涉及的列,避免全行读取 I/O 开销
- 压缩效率:同一列数据类型一致,压缩比更高(如 Dictionary Encoding、Run-Length Encoding)
- 向量化执行:列式数据可直接进行 SIMD 向量化计算,CPU 利用率更高
- 聚合查询友好:COUNT/SUM/AVG 等聚合仅需读取相关列
Trade-offs
- 点查询效率低:单行更新/插入需读写整列数据
- 写入放大:行更新涉及多列修改
- 适用场景受限:适合读密集型分析,不适合频繁更新的事务处理
Applications
- 数据仓库:Amazon Redshift、Google BigQuery、Snowflake、ClickHouse
- 列式文件系统:Apache Parquet、Apache ORC
- 分析型数据库:Apache Druid、Apache Kylin
Related Concepts
- MPP:列式存储常与 MPP 架构结合,实现大规模并行分析
- Sort-Key:在列式存储中排序键可进一步优化范围查询性能
- Data Compression:列式存储天然适合高压缩比