这是我参与「第五届青训营 」伴学笔记创作活动的第 34 天
列式存储
行式存储
列式存储
列式存储优点 - 数据压缩
- 数据压缩可以使读的数据量更少,在IO密集型计算中获得大的性能优势
- 相同类型压缩效率更高
- 排序之后压缩效率更高
- 可以针对不同类型使用不同的压缩算法
- 几种常见的压缩算法
列式存储优点 - 数据处理
查询优化
延迟物化
- 物化:将列数据转换为可以被计算或者输出的行数据或者内存数据结果的过程,物化后的数据通常可以用来做数据过滤,聚合计算,Join
- 延迟物化:尽可能推迟物化操作的发生
- 缓存友好
- CPU / 内存带宽友好
- 可以利用到执行计划和算子的优化,例如filter
- 保留直接在压缩列做计算的机会
列式存储优点 - 向量化
SIMD: single instruction multiple data,对于现代多核CPU,其都有能力用一条指令执行多条数据
ClickHouse
表定义和结构
集群架构
引擎架构
存储架构
Part
索引设计
ClickHouse不使用的原因
SSTables
MemTable
大量写入导致频繁访问,不适合sstable
LSM Tree
合并:
- segment越多,索引就会越多,减少访问的代价
- 顺序数据压缩效率更高,合并后有序数据就会更多,查询效率更高
- 前后台隔离