ClickHouse --表引擎的介绍

1. ClickHource 建表引擎的功能

1. 数据的存储方式
2. 是否可以使用索引
3. 数据的存储位置
4. 并发数据的访问
5. 会否可以使用分区
6. 是否支持数据的副本

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

1. MergeTree 系列引擎

2. Log 系列引擎

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

4.特定功能的引擎

 每个引擎都包含了多个具体的引擎,每个引擎均都有使用的场景。

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

3.1MergeTree 引擎的使用场景

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

3.2 MergeTree 的引擎系列有几大类

1.MergeTree 
2.ReplacingMergeTree
3.SummingMergeTree
4.AggregatingMergeTree
5.CollapsingMergeTree
6.VersionedCollapsingMergeTree
7.GraphiteMergeTree

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

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

主要的特点:

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

4.2 建表的实例

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

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

4.4 建表实例


 
// 创建不分区表
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')
// 常见分区表
 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');

可以看出分区表和普通表的存储不同如下图

在这里插入图片描述

1.checksums.txt:校验文件的正确性和完整性。
2.columns.txt:存储列的信息,包括数据类型。
3.count.txt : 存储分区目录下数据的总行数。
4.primary.idx : 存储索引数据的文件。稀疏索引,能够加速查询。
5.bin文件:存储数据的文件, 以压缩格式存储,默认LZ4。
6.mrk文件:存储列的数据标记的文件。
7.partiton.dat:存储存储分区表达式生成的值。使用二进制格式存储。该文件只在分区表中存储。
8.minmax_*文件: 存储能当前目录下, 分区字段对应的原始字段的最小和最大值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值