ClickHouse 核心引擎 MergeTree 解读

本文详细解读了ClickHouse的MergeTree表引擎,包括其数据存储结构、分区文件组织以及表创建的相关参数,如ORDER BY、PARTITION BY、PRIMARY KEY等。MergeTree引擎支持数据去重、聚合等多种特性,是ClickHouse的核心组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ClickHouse 是俄罗斯最大的搜索引擎 Yandex 在 2016 年开源的数据库管理系统(DBMS),主要用于联机分析处理(OLAP)。其采用了面向列的存储方式,性能远超传统面向行的 DBMS,近几年受到广泛关注。

本文将介绍 ClickHouse MergeTree 系列表引擎 的相关知识,并通过示例分析 MergeTree 存储引擎的数据存储结构。

1 MergeTree 表引擎简介

MergeTree(合并树)系列表引擎是 ClickHouse 提供的最具特色的存储引擎。MergeTree 引擎支持数据按主键、数据分区、数据副本以及数据采样等特性。官方提供了包括 MergeTree、ReplacingMergeTree、SummingMergeTree、AggregatingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、GraphiteMergeTree 等 7 种不同类型的 MergeTree 引擎的实现,以及与其相对应的支持数据副本的 MergeTree 引擎(Replicated*)。

首先来介绍一下 MergeTree 核心引擎

ReplacingMergeTree: 在后台数据合并期间,对具有相同排序键的数据进行去重操作。

SummingMergeTree: 当合并数据时,会把具有相同主键的记录合并为一条记录。根据聚合字段设置,该字段的值为聚合后的汇总值,非聚合字段使用第一条记录的值,聚合字段类型必须为数值类型。

AggregatingMergeTree: 在同一数据分区下,可以将具有相同主键的数据进行聚合。

CollapsingMergeTree: 在同一数据分区下,对具有相同主键的数据进行折叠合并。

VersionedCollapsingMergeTree

基于 CollapsingMergeTree 引擎,增添了数据版本信息字段配置选项。在数据依据 ORDER BY 设置对数据进行排序的基础上,如果数据的版本信息列不在排序字段中,那么版本信息会被隐式的作为 ORDER BY 的最后一列从而影响数据排序。

GraphiteMergeTree: 用来存储时序数据库 Graphites 的数据。

MergeTree 是该系列引擎中最核心的引擎,其他引擎均以 MergeTree 为基础,并在数据合并过程中实现了不同的特性,从而构成了 MergeTree 表引擎家族。下面我们通过 MergeTree 来具体了解 MergeTree 表系列引擎。

2 MergeTree 引擎

2.1 表创建

创建 MergeTree 的 DDL 如下所示:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] (      name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],       name2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值