Clickhouse为什么这么快?

一说到Clickhouse,大家都知道它非常快,那么CH为什么这么快,是因为使用了向量化、列式数据库还是其它。下面我们一起来探索它的奥秘。(《ClickHouse原理解析与应用实践》总结)

1、硬件方面

Clickhouse会在内存中进行Group By,并使用HashTable装载数据。与此同时,CH对于CPU L3级别的缓存也特别在意,因为一次L3级别缓存的失效都会带来70~100ns,积少成多。一个32G,则可能会浪费5亿次/秒的运算。也正是因为如此,CH能在基准查询中做到1.75亿次/秒的数据扫描能力

2、算法方面

常量方面,CH使用了Volnisky算法;非常量,则使用CPU的向量化执行SIMD来优化;正则使用re2和hyperscan算法。

3、应景优化

CH会在不同的场景使用不同的算法。例如,在去重函数uniqCombined中,会根据数据量选择不同的算法:数据量比较少的时候,会选择使用Array来保存;数据量中等的时候,使用HashSet;数据量很大的时候,会使用HyperLogLog算法。

4、向量化

CH使用向量化执行。SIMD被广泛地应用于文本转换、数据过滤、数据解压和JSON转换等场景。相对于单纯使用CPU,利用寄存器暴力优化也算是一种降维打击

5、持续测试和持续改进

一个好的产品,肯定是能很好应用于各种场景的。CH由于拥有Yandex的天然优势,经常会使用真实数据来进行测试,尝试使用于各个场景。也因此获得了快速的版本更新换代,基本维持在一个月一更新。

猜你喜欢

转载自blog.csdn.net/sileiH/article/details/113702750
今日推荐