ClickHouse单表查询飞快的三大技术原因:
首先,ClickHouse 的查询引擎是一个经典的 MPP 架构。
MPP 架构的好处是可以充分利用多节点的并行。如果实现得好,也可以充分利用节点内的多核并行。
其次,ClickHouse 的查询引擎,参考和继承了 MonetDB/X100 的实现,用的是向量化的执行引擎。
ClickHouse 对很多 operator 的向量化引擎的实现,大量使用 SMID 指令,同时结合了列式内存的布局,算子的性能提高非常的显著。
最后,ClickHouse 在数据的存储上采用了列式的 MergeTree 存储方式。
这也使得数据的编码,压缩和处理都可以很高效。ClickHouse 也和 Redshift 或者 Snowflake 一样,给自己的 MergeTree 提供了不同的索引结构,比如说 inverted index 索引,bloom filter 索引等。
这些技术的结合,造就了 ClickHouse的成功。