MergeTree 表引擎主要用于海量数据分析,支持数据分区、主键索引、稀疏索引和数据 TTL 等。
列式存储:只读取需要的列,节省 IO 和 CPU 资源。
数据分区:按照日期或其他条件将数据分割成多个部分,方便管理和查询。
稀疏主键索引:按照主键或排序键对数据进行排序和索引,加速范围查询。
次级跳过索引:根据列的最小值和最大值等统计信息跳过不符合条件的数据,进一步提高查询效率。
数据合并:后台定期将多个小的数据部分合并成一个大的数据部分,减少数据冗余和碎片。
MergeTree 引擎还有一些变种,如 ReplicatedMergeTree、AggregatingMergeTree 和 SummingMergeTree 等,它们在基本的 MergeTree 功能上增加了数据复制、数据聚合、数据求和等特性。MergeTree 表引擎支持 ClickHouse 的所有 SQL 语法,但是部分功能与标准 SQL 存在差异。
具体的 MergeTree 引擎及其变种的使用方式如下表所示:
系列 | 表引擎 | 简介 | 备注 |
MergeTree | MergeTree | 用于插入极大量的数据到一张表中,数据以数据片段的形式一个接着一个地快速写入,数据片段按照一定的规则进行合并。 | |
| ReplacingMergeTree | 可以替换掉具有相同主键的旧数据。 | |
| CollapsingMergeTree | CollapsingMergeTree 表引擎用于消除 ReplacingMergeTree 表引擎的功能限制。可以显著减少存储量并 SELECT,因此提高查询效率。 | |
| VersionedCollapsingMergeTree | 类似于 CollapsingMergeTree,但是可以保留最新版本的数据。 | |
| SummingMergeTree | 可以对具有相同主键的数据进行求和操作。 | |
| AggregatingMergeTree | 可以对具有相同主键的数据进行聚合操作。 |
说明:
ReplicatedSummingMergeTree
ReplicatedReplacingMergeTree
ReplicatedAggregatingMergeTree
ReplicatedCollapsingMergeTree
ReplicatedVersionedCollapsingMergeTree
ReplicatedGraphiteMergeTree