首页/数据/NoSQL 速查/行存与列存的选择依据
本包目录(322 条)
MongoDB99 条Elasticsearch89 条ClickHouse56 条时序与列式28 条
选型与架构50 条

行存与列存的选择依据

行存按整行连续存储,点查与整行读取高效;列存按列组织,扫描少量列的大范围统计时 IO 更省且压缩率高,代价是逐行更新与点查不擅长。

NoSQL 速查数据更新于 2026-10-12
行存适合按主键读写、事务、宽表整行返回
列存适合事实表聚合、宽表只取少列、高压缩比与批量导入
更新代价列存更新多为合并式写入(part 重写),不适合高频单行改

示例

示例
-- 列存优势场景:只读 3 列聚合 10 亿行明细
SELECT region, count() AS orders, sum(amount) AS gmv
FROM fact_orders
WHERE dt BETWEEN '2024-01-01' AND '2024-06-30'
GROUP BY region;
混合负载可以分层:交易与状态用行存,明细与指标用列存,通过同步链路连接。

易错点

  • 把高频更新的状态表放列存会持续产生 part 重写,收益为负
  • 列存上做 SELECT * 返回宽行会把列存优势抵消掉,查询应显式选列

数据来源与参考

  • ClickHouse Docs: MergeTree
  • ClickHouse Docs: Overview
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌