面试官: ClickHouse 为什么这么快?

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 面试官: ClickHouse 为什么这么快?

数据加速查询处理的方法

  • 矢量化查询执行
  • 运行时代码生成

在后者中,动态地为每一类查询生成代码,消除了间接分派和动态分派。

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

mpp 架构

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

mpp 理念

1、消除共享资源

2、并行(单机多核并行 sse 指令,多节点并行)

与批处理引擎 spark 的区别

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

3df5095ee1d0e573bdc4f1b01287833c.png

  • 区别 1 单 node 性能制约

受限与单 executor 性能制约(木桶原理),所以 mpp 架构数据库节点不宜太多,建议 50 以下,这也是与 spark 等批处理引擎的一个区别,具体来说,基于 HDFS 的 MapReduce task 数量等于输入分片,通常等于输入文件的 HDFS 块数量。在同步点之间,根据 executor 的可用性,task 被随机分配给 executor,如果 executor 经常失败,性能低下,这时预测执行将起效——慢节点上的 task 将在其他节点上重启,重新调度(注意这里是移动数据,走网络)

  • 区别 2 并发性

并发性是指有多少个查询可以有效地被并行执行。MPP 是完全对称的,一旦开始执行,集群中的每个节点并行执行相同的任务。这意味着 MPP 方案的并发级别完全与集群节点的数量无关。具体来说,无论集群是 4 个节点还是 400 个节点,并发性是一样的,它们的性能衰退也会在同一点体现,但是对于 spark 来说,无限制,取决于你的集群规模。

总结

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

相关文章
|
6月前
|
存储 SQL 缓存
StarRocks常见面试问题(一)
StarRocks常见面试问题(一)
|
2天前
|
存储 SQL 监控
【Clickhouse 探秘】你真正知道 Clickhouse 吗?
ClickHouse 是一个开源的列式数据库管理系统,专为在线分析处理(OLAP)设计。它由 Yandex 开发并于 2016 年开源。ClickHouse 以其高性能、实时数据处理能力和易用性著称,广泛应用于大数据分析、日志处理和用户行为分析等领域。其主要特点包括列式存储、向量化执行、分布式架构、丰富的数据类型和 SQL 支持。
13 4
|
4月前
|
SQL 监控 数据库
分库分表面试准备
【7月更文挑战第16天】
37 0
|
3月前
|
存储 SQL 关系型数据库
【ClickHouse】深入浅出系列之初识ClickHouse
【ClickHouse】深入浅出系列之初识ClickHouse
|
4月前
|
Java 关系型数据库 MySQL
面试官:聊聊你对分库分表的理解?
面试官:聊聊你对分库分表的理解?
69 3
|
5月前
|
存储 NoSQL MongoDB
MongoDB实战面试指南:常见问题一网打尽
MongoDB实战面试指南:常见问题一网打尽
|
SQL BI OLAP
【面试必问】窗口函数全解-HIVE
【面试必问】窗口函数全解-HIVE
|
SQL 关系型数据库 MySQL
MySQL分库分表面试知识点
MySQL分库分表面试知识点
101 0
|
存储 搜索推荐 关系型数据库
55.【clickhouse】ClickHouse从入门到放弃-概念场景
【clickhouse】ClickHouse从入门到放弃-概念场景
55.【clickhouse】ClickHouse从入门到放弃-概念场景
|
SQL 缓存 算法
14.【clickhouse】ClickHouse从入门到放弃-实战
【clickhouse】ClickHouse从入门到放弃-实战
14.【clickhouse】ClickHouse从入门到放弃-实战