更新时间:2023-04-28 GMT+08:00
分享

分桶

根据分桶列的Hash值将数据划分成不同的Bucket。

  • 如果使用了Partition,则DISTRIBUTED ... 语句描述的是数据在各个分区内的划分规则。如果不使用Partition,则描述的是对整个表的数据的划分规则。
  • 分桶列可以是多列,Aggregate和Unique模型必须为Key列,Duplicate模型可以是Key列和Value列。分桶列可以和Partition列相同或不同。
  • 分桶列的选择,是在查询吞吐和查询并发之间的一种权衡:
    • 如果选择多个分桶列,则数据分布更均匀。如果一个查询条件不包含所有分桶列的等值条件,那么该查询会触发所有分桶同时扫描,这样查询的吞吐会增加,单个查询的延迟随之降低。这个方式适合大吞吐低并发的查询场景。
    • 如果仅选择一个或少数分桶列,则对应的点查询可以仅触发一个分桶扫描。此时,当多个点查询并发时,这些查询有较大的概率分别触发不同的分桶扫描,各个查询之间的IO影响较小(尤其当不同桶分布在不同磁盘上时),所以这种方式适合高并发的点查询场景。
  • AutoBucket: 根据数据量,计算分桶数。 对于分区表,可以根据历史分区的数据量、机器数、盘数,确定一个分桶。
  • 分桶的数量理论上没有上限。

相关文档