ClickHouse 是什么
ClickHouse 是一个开源的面向联机分析处理(OLAP, On-Line Analytical Processing) 的列式存储数据库管理系统。
在一个 "常规" 的行式数据库管理系统中,数据按下面的顺序存储:
id | name | age ---|----------|---1 | Zhangsan | 182 | GlonHo | 203 | Lisi | 22...| ... | ...
换言之,所有相关的值在一个行里面一个挨一个存储。行式存储的的数据库管理系统有:MySQL, Postgres, MS SQL Server 等。
在一个列式存储数据库管理系统中,数据存储的方式如下所示:
id: 1 2 3 ...name: Zhangsan GlonHo Lisi ...age: 18 20 22 ...
列式存储的数据库管理系统更适合于 OLAP 场景(对于大多数查询,至少有 100 倍的处理速度提升)的原因有:
I/O 方面:
对于一个分析的查询,只需要表中少量的列。在一个列存储数据库管理系统中,可以只读取所需的数据。例如,如果只需要从 100 列中读取 5 列,那么预期可以减少 20倍 I/O
列式存储数据,更易于压缩,进一步减少 I/O
由于减少了 I/O,系统中可以缓存更多符合要求的数据
CPU 方面:
执行一个查询需要处理大量的行,它有助于调度所有操作对整个向量而不是单独的行,或实现查询引擎,这样几乎没有调度成本,如果不这么做,对于任意还过得去的磁盘子系统,查询解释器不可避免地分摊 CPU。