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