ClickHouse的复习

  1. ClickHouse的应用场景和优缺点

ClinkHouse 是一个联机分析型数据库

常用于数据以大批量进行插入的场景

而且在查询的时候最好只查询某几列,但是行数据很多的场景。

处理单个查询时需要高吞吐量

不需要事务,对于数据一致性要求不是特别高

那么其优点就是支持进行行存储,而且吞吐量巨大

写入大批量数据的时候非常快

其缺点则是不支持真正的删除和更新

对于join的支持并不好

而且由于采用了并行处理,即使是一个查询,也会先进行分配一半的CPU进行执行,所以在多个查询并发的时候可能由于cpu的分配不够,导致进行阻塞。

  1. ClinkHouse的核心特性

首先是列存储,支持从存储系统中只读取必要的列数据

其次是支持向量化执行,比起传统的逐行进行处理,性能消耗更低

对于文件存储,则是采用了编码压缩,每一列的数据在存储的时候都是经过排序的,整体的局部规律性很强。而且利用LZ4,Snappy等压缩算法进一步提高了压缩比。

最后是支持多索引,可以用于加快查询速度。

  1. 使用ClinkHouse的注意项

需要注意,如果需要分区键,那么在进行分区的时候,选择分区键的粒度很重要,如果时间的话,最好是按照天粒度

其次是指定索引列,clickhouse中的索引列就是排序列,通过order by指定,一般来说是频率越高,那么在order by中越靠前,但是需要注意primary key,即主键选择的时候比较反直觉。不能直接拿用户ID作为索引列,因为数据量太大了,而primary key 必须要包含在order by之中。所以用户ID并不适合做索引列。

还有就是在查询的时候需要一定要搭配limit使用,或者配合where,不然太浪费性能了。

多表join的时候需要满足小表在右边的原则,因为右表会加载到内存中和左表进行对比。

  1. ClickHouse的引擎有哪些?

一般来说有MergeTree系列引擎,Log系列的引擎,其他系统集成的引擎,特殊的引擎

我们说下MergeTree系列引擎,其中包含MergeTree,ReplacingMergeTree,SummingMergeTree,AggregatingMergeTree

MergeTree主要是支持所有ClickHouse的核心功能,支持主键排序,支持数据副本,支持数据采样

  1. 创建表时候的核心参数有

首先要指定ENGINE,明确是哪个引擎

ORDER BY,是Merge Tree中的必填项,主要是在不设置主键的时候,会按照order by的字段进行排序处理,而且主键也要是order by的前缀字段。

Order by 可以指代PRIMARY KEY,一般我们只声明ORDER BY即可

除此之外就是PARTITION BY,分区键

PRIMARY KEY,指定主键

TTL,设置数据的存活时间

发表评论

邮箱地址不会被公开。 必填项已用*标注