ClickHouse MergeTree家族引擎_wenlongxunmeng的博客-CSDN博客
大数据ClickHouse进阶(二十二):ClickHouse优化 - 知乎
1、ClickHouse使用场景
ClickHouse是一个开源的,用于联机分析(OLAP)的列式数据库管理系统, 它是面向列的,并允许使用SQL查询,实时生成分析报告。ClickHouse适合OLAP数据分析类的场景,数据体量越大,ClickHouse的优势越大。ClickHouse不适合以下场景:
(1)适合读或者大批量写的场景,不适合频繁的写或者修改(这种场景用Doris或者Kudu更为合适),在与Flink结合的场景下可以采用窗口的方式进行批量写;
(2)不适合根据主键进行行粒度查询或删除场景(支持但不建议);
(3)ClickHouse 不支持事务,事务场景不适合。
2、ClickHouse的MergeTree引擎
在ClickHouse的所有的表引擎中,其中最为核心的当属MergeTree系列表引擎,这些表引擎拥有最为强大的性能和最广泛的使用场合。MergeTree系列表引擎是官方主推的存储引擎,有主键索引、数据分区、数据副本、数据采样、删除和修改等功能,支持几乎所有ClickHouse核心功能。
MergeTree系列表引擎包含:MergeTree、ReplacingMergeTree、SummingMergeTree(汇总求和功能)、AggregatingMergeTree(聚合功能)、CollapsingMergeTree(折叠删除功能)、VersionedCollapsingMergeTree(版本折叠功能)引擎,在这些的基础上还可以叠加Replicated(副本)和Distributed(分片)。
MergeTree在写入一批数据时,数据总会以数据片段的形式写入磁盘,且数据片段在磁盘上不可修改。为了避免片段过多,ClickHouse会通过后台线程,定期合并这些数据片段,属于相同分区的数据片段会被合成一个新的片段。
2.1 MergeTree
2.1.1 MergeTree作为家族系列最基础的表引擎,主要有以下特点:
(1)存储的数据按照主键排序:创建稀疏索引加快数据查询速度。
(2)支持数据分区,可以通过PARTITION BY语句指定分区字段。
(3)支持数据副本。
(4)支持数据采样。