Merge Tree
少于1分钟
简要概述
创建表
语法
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)