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在后台合并数据片段以便更高效的存储。
不会合并来自不同分区的数据片段。

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

  1. 04_ClickHouse表引擎概述、MergeTree系列引擎、Log系列引擎、集成引擎、特定功能的引擎(学习笔记)

    1.表引擎概述 1.1.MergeTree系列引擎 1.2.Log系列引擎 1.3.集成引擎 1.4.特定功能的引擎 1.表引擎概述 ClickHouse在建表时必须指定表引擎. 表引擎主要分为四大类 ...

  2. 客快物流大数据项目(九十二):ClickHouse的MergeTree系列引擎介绍和MergeTree深入了解

    文章目录 ClickHouse的MergeTree系列引擎介绍和MergeTree深入了解 一.MergeTree系列引擎介绍 二.​​​​​​​MergeTree深入了解 1.创建MergeTree ...

  3. clickhouse MergeTree系列引擎

    在所有的表引擎中,最为核心的当属MergeTree系列表引擎,这些表引擎拥有最为强大的性能和最广泛的使用场合.对于非MergeTree系列的其他引擎而言,主要用于特殊用途,场景相对有限.而MergeT ...

  4. JavaWeb - 数据库,MySQL安装卸载,MySQL服务器存储结构,sql语言,使用sql操作数据库/数据库表/表中记录,聚集函数,分组操作,limit关键字,重置root密码

    转载请注明出处:https://blog.csdn.net/mythmayor/article/details/72781451 1.数据库的简介 (1)什么是数据库,就是一个文件系统,使用标准sql ...

  5. ClickHouse内核分析-MergeTree的存储结构和查询加速

    注:以下分析基于开源 v19.15.2.2-stable 版本进行 引言 ClickHouse是最近比较火的一款开源列式存储分析型数据库,它最核心的特点就是极致存储压缩率和查询性能,本人最近正在学习C ...

  6. 擎创工程师实战| ClickHouse存储结构及索引详解

    ClickHouse作为近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域.ClickHouse实现了大多数当前主流的数据分析技术,提供了极致的查询性能,能够以极低的成本存储海量数据,简 ...

  7. 联合索引会创建几个索引_联合索引在B+Tree上的存储结构及数据查找方式

    来源:SegmentFault 思否社区作者:木子雷 前言: 本篇文章主要是阐述下 联合索引 在 B+Tree 上的实际存储结构. 本文主要讲解的内容有: 联合索引在B+树上的存储结构 联合索引的查找 ...

  8. MYSQL Innodb逻辑存储结构

    转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...

  9. 联合索引会创建几个索引_联合索引在B+树上的存储结构及数据查找方式

    能坚持别人不能坚持的,才能拥有别人未曾拥有的. 关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 原文首发于该公号,欢迎关注 引言 上一篇文章<MySQL索引那些事>主要讲了MyS ...

最新文章

  1. 小甲鱼关于push,pop指令的一个编程题
  2. python游戏脚本实例-Python使用pygame模块编写俄罗斯方块游戏的代码实例
  3. select/poll/epoll 与 /dev/poll
  4. 1.1 计算机的发展
  5. PHP小白学习日程之旅
  6. matlab氢原子杂化轨道,网络版原子和分子结构可视化程序的开发
  7. java 中的访问修饰符
  8. java屏蔽关键字_替换禁用语(指定关键字)的过滤器
  9. 使用BootStrap编写网页,如何设置全屏页面背景?
  10. ClickHouse之简单性能测试
  11. IDEA无法加载log文件
  12. Silverlight 5 Beta新特性[4]文本缩进控制
  13. Net设计模式实例之中介者模式(Mediator Pattern)
  14. centos7 安装Gitlab
  15. ServletContext的应用(共享数据、获取初始化参数、请求转发、读取资源文件)【源码解析】
  16. WangEdit富文本编辑器图标修改
  17. python制作自动交易软件排名_A股股票自动化交易软件的使用和简易说明书,根据多年经验使用python开发...
  18. MinIO-linux-amd64下载
  19. 虚拟拨号服务器名称,怎么设置虚拟拨号服务器
  20. 优漫动游平面设计思维思维训练法

热门文章

  1. 阿里Python后端1w+薪资面试真题!(附带准答案)offer轻松拿到手
  2. 微信和Python之间,还能这样玩,你所不知道的骚操作!
  3. 机器学习(2.sklearn(Scikit-learn)库、字典数据的特征抽取)
  4. Django框架(5.django中模型类建立关系和多表关系查询)
  5. Flask框架(flask中设置和获取session)
  6. 用100行python代码发现语音识别文本错误词,并将结果和正确词一一对应
  7. wxWidgets:wxAcceleratorTable类用法
  8. boost::spirit模块实现使用不同的输出语法格式化单个容器类型的测试程序
  9. boost::unique_copy相关的测试程序
  10. boost::mpl::min和boost::mpl::max相关的测试程序