Clickhouse MergeTree 解析

在Clickhouse众多的表引擎中,MergeTree表引擎及其家族最为强大,在生产环境中的绝大数场景,都会使用此系列的表引擎。

只有MergeTree系列的表引擎才支持主键索引,数据分区,数据副本,数据采样这些特性,只有此系列的表引擎才支持ALTER操作。

MergeTree表引擎在写入一批数据的时候,数据总会以数据片段的形式写入磁盘,并且数据片段不可修改。为了避免片段过多,clickhouse会通过后台的线程,定期合并这些数据片段,属于不同分区的数据片段会被合并成一个新的片段,这种数据片段往复合并的特点正式合并树(MergeTree)名称的由来。

1.Mergetree的创建:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
    ...
    INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
    INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = MergeTree()
ORDER BY expr
[PARTITION BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[TTL expr [DELETE|TO DISK 'xxx'|TO VOLUME 'xxx'], ...]
[SETTINGS name=value, ...]

解释:

2.MergeTree的存储结构:

MergeTree表引擎中的数据是拥有物理存储的,数据会按照分区目录的形式存储到磁盘之上。

创建一个MergeTree分区表:


查看物理结构:

table_name
    |---partition 1
    |    |--


解释:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章