列式存储
- 在OLAP的场景下,通常只需要宽表中的某些列,传统的行式存储会读到很多不需要的列,写放大明显,IO效率低,列式存储就能很好解决这个问题
- 列式存储带来极高的压缩效率,能进一步提升IO效率
- 多样压缩算法选择
数据有序存储
ClickHouse支持在建表时,按照某一列进行排序。排序好的数据放在磁盘上,使得where的条件语句在查找时,减少跨block,提升性能
主键索引
数据插入、更新删除
作为OLAP型数据库,ClickHouse理想状态下是不需要做更新的,导致了它的更新和删除的支持不好(这里叫做mutation):无一致性保障、效率低下。以及关键的一点:删除和更新都是异步执行的,说明在过程中是读到脏数据的。ClickHouse推荐的更新方式是大规模更新。
Mutation
- 更新没有原子性保障
- 更新是按照提交顺序执行的
- 更新可能卡住