前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ClickHouse表引擎之MergeTree

ClickHouse表引擎之MergeTree

作者头像
小晨说数据
发布2022-03-10 10:35:36
7640
发布2022-03-10 10:35:36
举报
文章被收录于专栏:小晨讲Flink

1. ClickHource 建表引擎的功能

代码语言:javascript
复制
1. 数据的存储方式
2. 是否可以使用索引
3. 数据的存储位置
4. 并发数据的访问
5. 是否可以使用分区
6. 是否支持数据的副本

2.ClickHouse 的表引擎分为四大类

1. MergeTree 系列引擎

2. Log 系列引擎

3. 与其他存储/处理系统集成的引擎

4.特定功能的引擎

代码语言:javascript
复制
 每个引擎都包含了多个具体的引擎,每个引擎均都有使用的场景。

3. 详细来说说MergeTree 系列引擎

3.1MergeTree 引擎的使用场景

代码语言:javascript
复制
使用与高负载任务的最通用的和功能强大的表引擎,可以快速插入数据并进行后续的后台数据处理,支持复制(使用Replicated*的引擎版本), 分区和其他的引擎不支持的特性。

3.2 MergeTree 的引擎系列有几大类

代码语言:javascript
复制
1.MergeTree 
2.ReplacingMergeTree
3.SummingMergeTree
4.AggregatingMergeTree
5.CollapsingMergeTree
6.VersionedCollapsingMergeTree
7.GraphiteMergeTree

4.MergeTree 系列引擎的特点和存储结构

4.1 MergeTree 是ClickHouse 中最强大的的表引擎。

主要的特点:

代码语言:javascript
复制
1.数据按照主键排序,稀疏索快速检索数据
2.数据的分区,增加一个查询效率(分区也就是一个分目录的存储和hive 的分区概念一样)
3.数据副本,ReplicatedMergeTree系列的引擎支持数据副本, 提升查询性能和容错
4.数据采样,设置采样方法,快速分析数据。

4.2 建表的实例

代码语言:javascript
复制
关键字:
ENEIGE---------------------- 引擎名称和参数
PARTITION  BY----------------分区的字段
ORDER BY-------------------- 表的排序键
PRIMARY KEY------------------表的主键
SAMPLE BY----------------- --采样表达式
TTL -------------------------定义行数据的存储时间,磁盘和卷之间的数据片段的自动移动的逻辑。
STTINGS ---------------------控制MergeTree的行为的额外参数

4.3 MergeTree 的重要参数:

代码语言:javascript
复制
重要的参数:
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 : 存储策略,存储策略定义了使用多块社保进行数据存储的逻辑。
其他的参数设置可以用查询默认表:
select * from system.merge_tree_settings

4.4 建表实例

代码语言:javascript
复制

 
// 创建不分区表
CREATE  TABLE merge_demo
( srcip STRING, destip STRING ,date_time DATETIME)
 ENGINE=MergeTree() 
 ORDER BY srcip SETTINGS index_granularity = 8192;
// 插入数据
insert into merge_demo values('113.248.234.232','123.212.22.01','2018-07-12 14:25:31'),
('113.248.234.231','123.212.22.01','2019-08-15 14:25:31'),
('113.248.234.230','123.212.22.01','2020-09-20 14:25:31'),
('113.248.234.232','123.212.22.01','2018-10-12 14:25:31'),
('113.248.234.231','123.212.22.01','2018-11-28 14:25:31')
代码语言:javascript
复制
// 常见分区表
 CREATE  TABLE merge_partition_demo
 ( srcip STRING, destip STRING ,date_time DATETIME)
 ENGINE=MergeTree() 
 PARTITION BY toYYYYMM(date_time)
 ORDER BY (srcip);
 // 插入数据
insert into merge_partition_demo values('113.248.234.232','123.212.22.01','2018-07-12 14:25:31'),
('113.248.234.231','123.212.22.01','2019-08-15 14:25:31'),
('113.248.234.230','123.212.22.01','2020-09-20 14:25:31'),
('113.248.234.232','123.212.22.01','2018-10-12 14:25:31'),
('113.248.234.231','123.212.22.01','2018-11-28 14:25:31');
代码语言:javascript
复制
可以看出分区表和普通表的存储不同如下图

文件解释:

代码语言:javascript
复制
1.checksums.txt:校验文件的正确性和完整性。
2.columns.txt:存储列的信息,包括数据类型。
3.count.txt : 存储分区目录下数据的总行数。
4.primary.idx :存储索引数据的文件。稀疏索引,能够加速查询。
5.bin文件:存储数据的文件, 以压缩格式存储,默认LZ4。
6.mrk文件:存储列的数据标记的文件。
7.partiton.dat:存储存储分区表达式生成的值。使用二进制格式存储。该文件只在分区表中存储。
8.minmax_*文件:存储能当前目录下, 分区字段对应的原始字段的最小和最大值
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小晨说数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. ClickHource 建表引擎的功能
  • 2.ClickHouse 的表引擎分为四大类
    • 1. MergeTree 系列引擎
      • 2. Log 系列引擎
        • 3. 与其他存储/处理系统集成的引擎
          • 4.特定功能的引擎
            • 3. 详细来说说MergeTree 系列引擎
              • 3.1MergeTree 引擎的使用场景
                • 3.2 MergeTree 的引擎系列有几大类
                  • 4.MergeTree 系列引擎的特点和存储结构
                  • 4.1 MergeTree 是ClickHouse 中最强大的的表引擎。
                  • 主要的特点:
                    • 4.2 建表的实例
                      • 4.3 MergeTree 的重要参数:
                        • 4.4 建表实例
                          • 文件解释:
                      相关产品与服务
                      对象存储
                      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档