17 ClickHouse为什么快

ClickHouse起源

分布式数据库 ClickHouse实践_ClickHouse

分布式数据库 ClickHouse实践_ClickHouse_02

核心特征

ClickHouse 被称为数据库管理系统,提供了一套功能和接口,它允许在运行时创建表和数据库、加载数据和运行查询,让用户能够方便地对数据库进行管理和操作。

ClickHouse 号称能够得到每秒几亿行的吞吐能力,远超像 HBase、Cassandra 等数据库所说的每秒数十万的吞吐能力。当然,在我看来这个对比确实不在同一个标准,因为 HBase 这类数据库更适合在实时随机存取场景,ClickHouse 适合在批量导入与分析场景

列式存储

不同于 HBase 的宽列存储,StarRocks 的列式存储加混合存储,ClickHouse 是纯列式存储

分布式数据库 ClickHouse实践_ClickHouse_03

分布式数据库 ClickHouse实践_ClickHouse_04

向量化执行

向量化执行,可以认为是一个将需要多次执行的循环,用一次并行执行完成的优化。想想在列式存储场景中,比如需要做两个字段求和的统计分析,是不是之前需要逐行求和,用了向量化执行后,批量的“披萨原料”也就是数据已经现成准备好,然后一起批量烤制,是不是速度也快了,吞吐量也上来了。

分布式数据库 ClickHouse实践_ClickHouse_05

灵活的表引擎

合并树(MergeTree)家族、日志引擎系列、集成表引擎、其他特殊表引擎 4 大类,这 4 大类下面一共有几十种表引擎。每一个表引擎都有自己的特点,适合不同的业务场景。

分布式数据库 ClickHouse实践_ClickHouse_06

索引支持

分布式数据库 ClickHouse实践_ClickHouse_07

分布式架构

分布式数据库 ClickHouse实践_ClickHouse_08

18 ClickHouse如何选用表引擎

MergeTree

分布式数据库 ClickHouse实践_ClickHouse_09

分布式数据库 ClickHouse实践_ClickHouse_10

分布式数据库 ClickHouse实践_ClickHouse_11

分布式数据库 ClickHouse实践_ClickHouse_12

ClickHouse 的稀疏索引默认每 8192 行数据创建一个索引标记,你也可以通过建表参数 index_granularity 修改这个默认值。

ReplacingMergeTree