MergeTree我们是用的最多的,这里我们现只看MergeTree的引擎。
---4-1---
表引擎和mysql的表引擎的区别,数据按照主键排序的,稀疏索引,数据分区和副本,数据采样。
建表模版:
看下下面的关键字:
看下行为的额外参数:
索引的粒度。
看下系统表:
---
我们来建两张表:
没指定主键,默认情况下主键和排序键是一样的。
分区表是按照月来分区的,分区就是有节点了。
看下分区表的数据:
看下非分区表:
进入到第一个文件:
存储的数据进行切片。
这几个文件:
1.校验和文件checksnums
2.列信息columns
3.数据行数count
4.其他.数据和数据的切片scrip destip data_time
5.主键,不设置的话默认是排序的列是主键 primary
---
分区表:
进去文件夹:
看下原始数据:
第一个文件:
不可读,存储分区键的最大和最小值。
第二个文件:
存储的是分区的信息。
数据片段:
一个表是按照主键排序的数据片段。
我们在分区表,假如我们插入一条数据:
多了一条数据,等一会合并了。
查一下:
手动合并:
这个语句后面可以加分区的。
---4-2---
ttl是干什么的?
创建一个带TTL的表:
插入数据:
看下后台的 存储情况:
执行数据合并可以触发删除:
修改-给表添加ttl:
修改-修改表的ttl:
查看:
总结:
案例:
操作:
看下文件:
什么时候删除过期数据呢?
查看下合并频率:
---4-3---
关于分区和分区键。
分区的原则:
定义字符串分区的话是变为hash之后再分区的。
几种分区的对比:
1.第一种情况看下后台的存储
all就是分区的名称。
在系统表看下分区的表达式。
2.数值类型的分区表。
看下底层的数据存储:
看下系统表:
3.日期类型的分区表
看下文件:
4.字符串类型的分区
分区合并的过程:
演示:
插入数据:
深度就是几次合并。
分区表达式的指定:
---4-4---
索引的查询:
索引的粒度为3的时候就是每3条数据生成一条索引记录。主键就是索引。
索引查询:
---4-5---
click的数据存贮:
没看完。
---4-6---