数据仓库与 OLAPPartition / Bucket
分区分桶 是什么?
先按时间分区,再按哈希分桶,决定数据怎么切
类比:先按月份分柜子,再按编号分格子
两层各管什么
分区(Partition)按时间切,主要为了冷数据管理和分区裁剪;分桶(Bucket)按哈希切,主要为了把数据均匀打散到多个 BE,让查询能并行。
分桶键怎么选
选错会直接导致数据倾斜,一个 BE 忙死其他闲着。
- 用高基数、分布均匀的字段,比如 user_id、order_id
- 不要用性别、状态这种低基数字段
- 桶数建议是 BE 数量的整数倍,方便均匀分布
- 桶数一旦确定,后期改要重建数据,建表时要估算好
常见规模
单分区数据量 1~10GB 比较合适,桶数按“单桶 1GB 左右”估算。数据量不大时不必分桶过多,否则小文件和小 Tablet 反而拖慢查询。