Merge Tree

简要概述

合并树表引擎

创建表

语法

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [[NOT] NULL] [DEFAULT|MATERIALIZED|ALIAS|EPHEMERAL expr1] [COMMENT ...] [CODEC(codec1)] [STATISTIC(stat1)] [TTL expr1] [PRIMARY KEY] [SETTINGS (name = value, ...)],
    name2 [type2] [[NOT] NULL] [DEFAULT|MATERIALIZED|ALIAS|EPHEMERAL expr2] [COMMENT ...] [CODEC(codec2)] [STATISTIC(stat2)] [TTL expr2] [PRIMARY KEY] [SETTINGS (name = value, ...)],
    ...
    INDEX index_name1 expr1 TYPE type1(...) [GRANULARITY value1],
    INDEX index_name2 expr2 TYPE type2(...) [GRANULARITY value2],
    ...
    PROJECTION projection_name_1 (SELECT <COLUMN LIST EXPR> [GROUP BY] [ORDER BY]),
    PROJECTION projection_name_2 (SELECT <COLUMN LIST EXPR> [GROUP BY] [ORDER BY])
) ENGINE = MergeTree()
ORDER BY expr
[PARTITION BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[TTL expr
    [DELETE|TO DISK 'xxx'|TO VOLUME 'xxx' [, ...] ]
    [WHERE conditions]
    [GROUP BY key_expr [SET v1 = aggr_func(v1) [, v2 = aggr_func(v2) ...]] ] ]
[SETTINGS name = value, ...]

示例

CREATE TABLE test.hosts
(
    `start_time` DateTime,
    `host` String,
    `status` UInt32,
) ENGINE = MergeTree() order by start_time;

存储结构

系统上的路径

这里以 rpm 安装后默认存储路径为 “/var/lib/clickhouse/",其中数据库 “test” 下的 “hosts” 表为例:

在系统上的存储路径为:"/var/lib/clickhouse/data/test/hosts”

数据分区规则

类型 分区表达式 示例数据 分区ID
- all
数字 PARTITION BY status 200, 400 分区1:200、分区2:400
日期 PARTITION BY start_time 2024-03-24 分区1:2024-03-24
字符串 PARTITION BY host example.com 分区1:md5sum(host)



最后修改 2024.04.02: feat: add ebpf (d801f68)