ClickHouse單表查詢飛快的三大技術原因:
首先,ClickHouse 的查詢引擎是一個經典的 MPP 架構。
MPP 架構的好處是可以充分利用多節點的并行。如果實作得好,也可以充分利用節點内的多核并行。
其次,ClickHouse 的查詢引擎,參考和繼承了 MonetDB/X100 的實作,用的是向量化的執行引擎。
ClickHouse 對很多 operator 的向量化引擎的實作,大量使用 SMID 指令,同時結合了列式記憶體的布局,算子的性能提高非常的顯著。
最後,ClickHouse 在資料的存儲上采用了列式的 MergeTree 存儲方式。
這也使得資料的編碼,壓縮和處理都可以很高效。ClickHouse 也和 Redshift 或者 Snowflake 一樣,給自己的 MergeTree 提供了不同的索引結構,比如說 inverted index 索引,bloom filter 索引等。
這些技術的結合,造就了 ClickHouse的成功。