ClickHouse(二) | 青训营笔记

205 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 34 天

列式存储

行式存储

image.png

列式存储

image.png

列式存储优点 - 数据压缩

  • 数据压缩可以使读的数据量更少,在IO密集型计算中获得大的性能优势
  • 相同类型压缩效率更高
  • 排序之后压缩效率更高
  • 可以针对不同类型使用不同的压缩算法
  • 几种常见的压缩算法

image.png

image.png

image.png

列式存储优点 - 数据处理

查询优化

image.png

延迟物化
  • 物化:将列数据转换为可以被计算或者输出的行数据或者内存数据结果的过程,物化后的数据通常可以用来做数据过滤,聚合计算,Join image.png
  • 延迟物化:尽可能推迟物化操作的发生
    • 缓存友好
    • CPU / 内存带宽友好
    • 可以利用到执行计划和算子的优化,例如filter
    • 保留直接在压缩列做计算的机会

image.png

列式存储优点 - 向量化

SIMD: single instruction multiple data,对于现代多核CPU,其都有能力用一条指令执行多条数据

image.png

image.png

image.png

image.png

image.png

image.png

ClickHouse

表定义和结构

image.png

集群架构

image.png

引擎架构

image.png

存储架构

image.png

Part

image.png

image.png

image.png

索引设计

image.png

image.png

image.png

ClickHouse不使用的原因

image.png

image.png

SSTables

image.png

MemTable

大量写入导致频繁访问,不适合sstable image.png

LSM Tree

image.png

image.png 合并:

  • segment越多,索引就会越多,减少访问的代价
  • 顺序数据压缩效率更高,合并后有序数据就会更多,查询效率更高
  • 前后台隔离

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

查询优化

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

数据合并

image.png

image.png

image.png

image.png

image.png

image.png

典型应用场景

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png