跳到主要内容
版本:Latest-3.3

功能边界:数据分布

本文档概述了 StarRocks 支持的分区和分桶功能。

支持的表类型

  • 分桶

    所有表类型均支持哈希分桶。随机分桶从 v3.1 版本开始支持,仅支持明细表

  • 分区

    从 v3.1 版本开始,表达式分区、Range 分区和 List 分区均支持所有表类型。

分桶

功能关键功能点支持状态备注
分桶策略哈希分桶
随机分桶是 (v3.1+)随机分桶仅支持明细表。从 v3.2 版本开始,StarRocks 支持根据集群信息和数据大小动态调整创建的 Tablet 数量。
分桶键数据类型日期、整数、字符串
分桶数量自动设置分桶数量是 (v3.0+)自动根据 BE 节点数量或最大历史分区的数据量确定。
后续版本对分区表和非分区表分别进行了优化。
随机分桶按需动态增加分桶数量是 (v3.2+)

分区

功能关键功能点支持状态备注
分区策略表达式分区是 (v3.1+)
  • 包括基于时间函数表达式的分区(自 v3.0 起)和基于列表达式的分区(自 v3.1 起)
  • 支持的时间函数:date_trunc、time_slice
Range 分区是 (v3.2+)从 v3.3.0 起,三种特定时间函数可用于分区键:from_unixtime、from_unixtime_ms、str2date、substr/substring。
List 分区是 (v3.1+)
分区键数据类型日期、整数、布尔值
字符串
  • 仅表达式分区和 List 分区支持字符串类型的分区键。
  • Range 分区不支持字符串类型的分区键。需要使用 str2date 将列转换为日期类型。

分区策略的区别

表达式分区Range 分区List 分区
基于时间函数表达式的分区基于列表达式的分区
数据类型日期 (DATE/DATETIME)
  • 字符串 (除 BINARY)
  • 日期 (DATE/DATETIME)
  • 整数和布尔值
  • 字符串 (除 BINARY) [1]
  • 日期或 Timestamp [1]
  • 整数
  • 字符串 (除 BINARY)
  • 日期 (DATE/DATETIME)
  • 整数和布尔值
支持多个分区键/(仅支持一个日期类型的分区键)
支持分区键的 Null 值/ [2]/ [2]
在数据导入前手动创建分区/ [3]/ [3]
  • 如果分区是批量手动创建的,则需要手动创建
  • 如果采用动态分区策略,则无需手动创建
在数据导入时自动创建分区//
备注
  • [1]: 需要使用 from_unixtime、str2date 或其他时间函数将列转换为日期类型。

  • [2]: 从 v3.3.3 版本起,List 分区的分区键将支持 Null 值。

  • [3]: 分区将自动创建。

有关 List 分区和表达式分区的详细比较,请参阅 List 分区和表达式分区的区别