2023年11月26日发(作者:)
第四章partitionby分区
⼀、作⽤
分区的⽬的是降低扫描范围,优化查询速度。
⼆、数据写⼊与分区合并
任何⼀个批次数据写⼊都会产⽣⼀个临时分区,不会纳⼊任何⼀个已有分区。写⼊后某个时刻(⼤概10-15分钟),CH⾃动执⾏合并操作。等不
及可以⼿⼯执⾏合并。
> optimize table *** final;
> cd default
> ll
PartitionId_MinBlockNum_MaxBlockNum_Level
分区值_最⼩分区块编号_最⼤分区块编号_合并层级
=》PartitionId
数据分区ID⽣成规则
数据分区规则由分区ID决定,分区ID由PARTITION BY分区键决定。根据分区键字段类型,ID⽣成规则可分为:
未定义分区键
没有定义PARTITION BY,默认⽣成⼀个⽬录名为all的数据分区,所有数据均存放在all⽬录下。
整型分区键
分区键为整型,那么直接⽤该整型值的字符串形式做为分区ID。
⽇期类分区键
分区键为⽇期类型,或者可以转化成⽇期类型。
其他类型分区键
String、Float类型等,通过128位的Hash算法取其Hash值作为分区ID。
=》MinBlockNum
最⼩分区块编号,⾃增类型,从1开始向上递增。每产⽣⼀个新的⽬录分区就向上递增⼀个数字。
=》MaxBlockNum
最⼤分区块编号,新创建的分区MinBlockNum等于MaxBlockNum的编号。
=》Level
合并的层级,被合并的次数。合并次数越多,层级值越⼤。
> cd 20200601_1_1_0/
> ll
:数据⽂件
3:标记⽂件,数据和索引之间的标记,存储数据的偏移量
default_compression_:默认压缩格式
:分区⾏数,这是表⾏数统计快的原因
:列名、类型记录⽂件
:校验信息,看不懂的东西
:主键索引⽂件,稀疏索引,
:分区索引⽂件
minmax_create_:分区内部索引⽂件,最⼩值与最⼤值
bin⽂件:数据⽂件
mrk⽂件:标记⽂件
标记⽂件在 idx索引⽂件 和 bin数据⽂件 之间起到了桥梁作⽤。
以mrk2结尾的⽂件,表⽰该表启⽤了⾃适应索引间隔。
⽂件:主键索引⽂件,⽤于加快查询效率。
minmax_create_:分区键的最⼤最⼩值。
:校验⽂件,⽤于校验各个⽂件的正确性。存放各个⽂件的size以及hash值。
四、分区合并
先查询⼀下当前的数据:
insert into t values
查看数据⽬录:
什么结论呢?20200601_1_1_0与新插⼊的分区20200601_3_3_0合并了⼀个新的2020-6-1_1_3_1,最⼩块+最⼤块+合并层级。形成⼀个新
的数据⽂件。


发布评论