列式存储

  1. 在OLAP的场景下,通常只需要宽表中的某些列,传统的行式存储会读到很多不需要的列,写放大明显,IO效率低,列式存储就能很好解决这个问题
  2. 列式存储带来极高的压缩效率,能进一步提升IO效率
  3. 多样压缩算法选择

数据有序存储

ClickHouse支持在建表时,按照某一列进行排序。排序好的数据放在磁盘上,使得where的条件语句在查找时,减少跨block,提升性能

主键索引

数据插入、更新删除

作为OLAP型数据库,ClickHouse理想状态下是不需要做更新的,导致了它的更新和删除的支持不好(这里叫做mutation):无一致性保障、效率低下。以及关键的一点:删除和更新都是异步执行的,说明在过程中是读到脏数据的。ClickHouse推荐的更新方式是大规模更新。

Mutation

  1. 更新没有原子性保障
  2. 更新是按照提交顺序执行的
  3. 更新可能卡住