自动分桶数问题

建表的时候设置了分桶键,自动设置分桶数量,分区是按照小时分区,表达式创建分区,为什么刚开始的分区的分桶数都为6,大部分从第六个分区开始就变成1了?

后面自动分桶数是会按照上一个分区的数据量来进行分桶数的设置 ,有什么业务需求是会按照小时分区吗 ?还是为了做测试

你好 我们的业务数据量比较大,所以定的以小时分区

麻烦帮忙看一下呢 感谢

@yuchen1019

每个分区大概多少数据量? 如果不是实时导入 下一个自动分区创建时不能参考上一个分区的数据量 那么您这个场景不太适用这个场景 需要提前手动创建下分区

@yuchen1019 目前开发环境数据量不大,每个分区的数量大概都在100M以内,但是线上环境是实时导入的,是不是在开发环境的话可以暂时不管这个问题?

这个问题我也好奇,官方文档是这样描述的:“自 2.5.7 版本起, StarRocks 支持根据机器资源和数据量自动设置分区的分桶数量。” 。
设置分桶的数量应该是在DDL阶段完成的,这个时候数据还没有导入, 如何设置呢?
并且如果一个分区最开始导入100GB数据, 然后再导入300GB数据,分桶的数量会变么?

官方原话:“如您的表单个分区原始数据规模预计超过100GB,建议您使用下述方式手动设置分桶数量。”
感觉是如果每个分区的数据都很均衡的话,可以考虑使用自动分桶,毕竟下个分区的分桶数按照上一个分区的数据量来设置,如果数据量会陡增的话,还是建议手动分桶

请问自动确定分桶数的原理是怎样的,它如何确定需要多少个分桶,是有什么根据CPU核数之类的公式吗

大概逻辑就是,刚开始创建的时候是个固定值,比如你集群的be数量,然后动态分区创建几个分区后,根据历史分区的数据量决定新建分区的分桶数。

感谢解答,我找到了相关的patch,提到了详细的逻辑:


核心逻辑的计算函数入口:

根据数据量决定分桶数的建议:
https://doris.apache.org/zh-CN/docs/table-design/data-partition/#bucket-的数量和数据量的建议