05_ClickHouse、MergeTree系列引擎概述与存储结构、建表模板、建表语句、MergeTree设置、建表示例、数据存储、数据片段(data part)

2.MergeTree系列引擎概述与存储结构
2.1.建表模板
2.2.建表语句
2.3.MergeTree设置
2.4.建表示例
2.5.数据存储
2.6.数据片段(data part)

2.MergeTree系列引擎概述与存储结构

MergeTree系列引擎是ClickHouse中最强大的表引擎。
数据按照片段被一批批写入表。
数据片段在后台按照一定的规则进行合并。

主要特征:
数据按照主键排序
稀疏索引快速检索数据

数据分片
增加查询性能

数据副本
ReplicatedMergeTree系列的引擎支持数据副本,提升查询性能和容错。

数据采样
设置采样方法,快速分析数据。

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:引擎的名称和参数
PARTITION BY:分区键
ORDER BY:表的排序键
PRIMARY KEY:表的主键
SAMPLE BY:采样表达式
TTL:定义行数据的存储时间,磁盘和卷之间数据片段的自动移动的逻辑
SETTINGS:控制MergeTree行为的额外参数

2.3.MergeTree设置

重要参数:
1.index_granularity:索引粒度,以行数为单位,表示索引标记(mark)之间的最大数据行数。默 认值:8192。
2.index_granularity_bytes:索引粒度,以字节为单位, 表示索引粒度的最大字节大小, 默认值:10Mb。设置该参数为0, 将仅按行数限制索引粒度大小。
3.use_minimalistic_part_header_in_zookeeper : 数据片段(part)头在ZooKeeper中的存储方法。设置为1,紧凑存储数据片段头信息,极大减少ZooKeeper的存储数据量
4.storage_policy : 存储策略。存储策略定义了使用多块设备进行数据存储的逻辑。

更多设置参数:参数列表及其功能参见表system.merge_tree_settings(SELECT * FROM system.merge_tree_settings;)。

MergeTree参数的设置:
1.表级别:在建表时设置。
2.全局:config.xml的merge_tree标签内进行设置。

2.4.建表示例

1.非分区表

CREATE TABLE merge_demo 
(
srcip String,
destip String, 
date_time DateTime 
) ENGINE = MergeTree() 
ORDER BY srcip 
SETTINGS index_granularity = 8192;

2.分区表

CREATE TABLE merge_partition_demo 
(
`srcip` String,
`destip` String, 
`date_time` DateTime 
) ENGINE = MergeTree() 
PARTITION BY toYYYYMM(date_time) 
ORDER BY srcip;

2.5.数据存储

进入类似:/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 :存储列的信息,包括数据类型。
count.txt : 存储分区目录下数据的总行数。
primary.idx : 存储索引数据的文件。稀疏索引,能够加速查询。
bin文件 :存储数据的文件, 以压缩格式存储,默认LZ4。
mrk文件 :存储列的数据标记的文件。
partiton.dat : 存储存储分区表达式生成的值。使用二进制格式存储。该文件只在分区表中存储。
*minmax_文件 : 存储能当前目录下, 分区字段对应的原始字段的最小和最大值。
skp_idx_.idx、skp_idx_.mrk : skip索引标记文件。

2.6.数据片段(data part)

一个表是由按主键排序的数据片段(part)组成。
当向表中插入数据时, 将创建单独的数据片段。
ClickHouse在后台合并数据片段以便更高效的存储。
不会合并来自不同分区的数据片段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值