clickhouse 加速查询方法和mpp架构

2021-08-02  本文已影响0人  邵红晓

数据加速查询处理的方法

在后者中,动态地为每一类查询生成代码,消除了间接分派和动态分派。这两种方法中,并没有哪一种严格地比另一种好。运行时代码生成可以更好地将多个操作融合在一起,从而充分利用 CPU 执行单元和流水线。矢量化查询执行不是特别实用,因为它涉及必须写到缓存并读回的临时向量。如果 L2 缓存容纳不下临时数据,那么这将成为一个问题,如果我们要尽量使块的大小足够小,从而 CPU 缓存能够容纳下临时数据。在这个假设下,与其他计算相比,读写临时数据几乎是没有任何开销的(相比后者优点:拆分流水线使得中间数据缓存、获取同时运行的类似查询的中间数据以及相似查询的流水线合并等功能很容易实现,并且矢量化查询执行更容易利用 CPU 的 SIMD 功能)。论文表明,将两种方法结合起来是更好的选择,clickhouse使用了矢量化查询执行,同时初步提供了有限的运行时动态代码生成。

mpp架构

MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。

mpp理念

1、消除共享资源
2、并行(单机多核并行sse指令,多节点并行)

与批处理引擎spark的区别

ck每个executor运行完全相同的数据处理逻辑,处理从本地存储加载的私有数据块。在执行步骤间有一些为数据交换而实现的同步点shuffle(例如Apache Spark和MapReduce的shuffle步骤)


image.png

总结

ClickHouse在计算层做了非常细致的工作,竭尽所能榨干硬件能力,提升查询速度。它实现了单机多核并行、分布式计算、向量化执行与SIMD指令、代码生成等多种重要技术。
根据经验,主流MPP系统与Apache Spark比较性能的话——同样硬件集群规模——Apache Spark通常会慢3-5倍。所以合理的把MPP集群规模限制在50台,将和250台规模的Apache Spark集群性能一致,但是呢Apache Spark可以超过250个节点,MPP就望尘莫及了

参考
https://zhuanlan.zhihu.com/p/25296001

上一篇 下一篇

猜你喜欢

热点阅读