05_ClickHouse、MergeTree系列引擎概述与存储结构、建表模板、建表语句、MergeTree设置、建表示例、数据存储、数据片段(data part)
2.MergeTree系列引擎概述與存儲結(jié)構(gòu)
2.1.建表模板
2.2.建表語句
2.3.MergeTree設(shè)置
2.4.建表示例
2.5.數(shù)據(jù)存儲
2.6.數(shù)據(jù)片段(data part)
2.MergeTree系列引擎概述與存儲結(jié)構(gòu)
MergeTree系列引擎是ClickHouse中最強大的表引擎。
數(shù)據(jù)按照片段被一批批寫入表。
數(shù)據(jù)片段在后臺按照一定的規(guī)則進行合并。
主要特征:
?數(shù)據(jù)按照主鍵排序
稀疏索引快速檢索數(shù)據(jù)
?數(shù)據(jù)分片
增加查詢性能
?數(shù)據(jù)副本
ReplicatedMergeTree系列的引擎支持數(shù)據(jù)副本,提升查詢性能和容錯。
?數(shù)據(jù)采樣
設(shè)置采樣方法,快速分析數(shù)據(jù)。
2.1.建表模板
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() [PARTITION BY expr] [ORDER BY expr] [PRIMARY KEY expr] [SAMPLE BY expr] [TTL expr [DELETE|TO DISK 'xxx'|TO VOLUME 'xxx'], ...] [SETTINGS name=value, ...]2.2.建表語句
ENGINE:引擎的名稱和參數(shù)
PARTITION BY:分區(qū)鍵
ORDER BY:表的排序鍵
PRIMARY KEY:表的主鍵
SAMPLE BY:采樣表達式
TTL:定義行數(shù)據(jù)的存儲時間,磁盤和卷之間數(shù)據(jù)片段的自動移動的邏輯
SETTINGS:控制MergeTree行為的額外參數(shù)
2.3.MergeTree設(shè)置
重要參數(shù):
1.index_granularity:索引粒度,以行數(shù)為單位,表示索引標記(mark)之間的最大數(shù)據(jù)行數(shù)。默 認值:8192。
2.index_granularity_bytes:索引粒度,以字節(jié)為單位, 表示索引粒度的最大字節(jié)大小, 默認值:10Mb。設(shè)置該參數(shù)為0, 將僅按行數(shù)限制索引粒度大小。
3.use_minimalistic_part_header_in_zookeeper : 數(shù)據(jù)片段(part)頭在ZooKeeper中的存儲方法。設(shè)置為1,緊湊存儲數(shù)據(jù)片段頭信息,極大減少ZooKeeper的存儲數(shù)據(jù)量
4.storage_policy : 存儲策略。存儲策略定義了使用多塊設(shè)備進行數(shù)據(jù)存儲的邏輯。
更多設(shè)置參數(shù):參數(shù)列表及其功能參見表system.merge_tree_settings(SELECT * FROM system.merge_tree_settings;)。
MergeTree參數(shù)的設(shè)置:
1.表級別:在建表時設(shè)置。
2.全局:config.xml的merge_tree標簽內(nèi)進行設(shè)置。
2.4.建表示例
1.非分區(qū)表
CREATE TABLE merge_demo ( srcip String, destip String, date_time DateTime ) ENGINE = MergeTree() ORDER BY srcip SETTINGS index_granularity = 8192;2.分區(qū)表
CREATE TABLE merge_partition_demo ( `srcip` String, `destip` String, `date_time` DateTime ) ENGINE = MergeTree() PARTITION BY toYYYYMM(date_time) ORDER BY srcip;2.5.數(shù)據(jù)存儲
進入類似:/var/lib/clickhouse/data/{DBNAME}/{TABLENAME}/201403_1_1_0,可以看到類似如下的文件:
[root@hbase2 TabSeparated_demo]# cd 201403_1_1_0/ [root@hbase2 201403_1_1_0]# ll總用量 84 -rw-r----- 1 clickhouse clickhouse 648 11月 23 18:54 checksums.txt -rw-r----- 1 clickhouse clickhouse 158 11月 23 18:54 columns.txt -rw-r----- 1 clickhouse clickhouse 39 11月 23 18:54 CounterID.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 CounterID.mrk2 -rw-r----- 1 clickhouse clickhouse 2 11月 23 18:54 count.txt -rw-r----- 1 clickhouse clickhouse 10 11月 23 18:54 default_compression_codec.txt -rw-r----- 1 clickhouse clickhouse 36 11月 23 18:54 EventDate.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 EventDate.mrk2 -rw-r----- 1 clickhouse clickhouse 36 11月 23 18:54 JavaEnable.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 JavaEnable.mrk2 -rw-r----- 1 clickhouse clickhouse 4 11月 23 18:54 minmax_EventDate.idx -rw-r----- 1 clickhouse clickhouse 4 11月 23 18:54 partition.dat -rw-r----- 1 clickhouse clickhouse 20 11月 23 18:54 primary.idx -rw-r----- 1 clickhouse clickhouse 41 11月 23 18:54 RegionID.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 RegionID.mrk2 -rw-r----- 1 clickhouse clickhouse 151 11月 23 18:54 Title.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 Title.mrk2 -rw-r----- 1 clickhouse clickhouse 52 11月 23 18:54 UserID.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 UserID.mrk2 -rw-r----- 1 clickhouse clickhouse 107 11月 23 18:54 WatchID.bin -rw-r----- 1 clickhouse clickhouse 48 11月 23 18:54 WatchID.mrk2 [root@hbase2 201403_1_1_0]#checksums.txt :校驗文件的正確性和完整性。
columns.txt :存儲列的信息,包括數(shù)據(jù)類型。
count.txt : 存儲分區(qū)目錄下數(shù)據(jù)的總行數(shù)。
primary.idx : 存儲索引數(shù)據(jù)的文件。稀疏索引,能夠加速查詢。
bin文件 :存儲數(shù)據(jù)的文件, 以壓縮格式存儲,默認LZ4。
mrk文件 :存儲列的數(shù)據(jù)標記的文件。
partiton.dat : 存儲存儲分區(qū)表達式生成的值。使用二進制格式存儲。該文件只在分區(qū)表中存儲。
*minmax_文件 : 存儲能當前目錄下, 分區(qū)字段對應的原始字段的最小和最大值。
skp_idx_.idx、skp_idx_.mrk : skip索引標記文件。
2.6.數(shù)據(jù)片段(data part)
一個表是由按主鍵排序的數(shù)據(jù)片段(part)組成。
當向表中插入數(shù)據(jù)時, 將創(chuàng)建單獨的數(shù)據(jù)片段。
ClickHouse在后臺合并數(shù)據(jù)片段以便更高效的存儲。
不會合并來自不同分區(qū)的數(shù)據(jù)片段。
總結(jié)
以上是生活随笔為你收集整理的05_ClickHouse、MergeTree系列引擎概述与存储结构、建表模板、建表语句、MergeTree设置、建表示例、数据存储、数据片段(data part)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部队对军嫂有哪些待遇
- 下一篇: 职高毕业一年后去参军,参军两年退役后还可