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
    |    |--


解釋:

 

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