跳到主要内容
版本: 最新版本-3.5

功能支持:数据分布

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

支持的表类型

  • 分桶

    所有表类型都支持 Hash 分桶。随机分桶(从 v3.1 开始)仅在 Duplicate Key 表中支持。

  • 分区

    表达式分区(从 v3.1 开始)、范围分区和列表分区(从 v3.1 开始)在所有表类型中都支持。

分桶

特性要点支持状态注意
分桶策略Hash 分桶
Random 分桶是 (v3.1+)随机分桶仅在 Duplicate Key 表中支持。
从 v3.2 开始,StarRocks 支持根据集群信息和数据大小动态调整要创建的 Tablet 数量。
分桶键数据类型日期、整数、字符串
Bucket 数量自动设置 Bucket 数量是 (v3.0+)由 BE 节点数量或最大历史分区的数据量自动确定。
在更高版本中,已针对分区表和非分区表分别优化了逻辑。
随机分桶的 Bucket 数量动态增加是 (v3.2+)

分区

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

分区策略之间的差异

表达式分区范围分区列表分区
基于时间函数表达式的分区基于列表达式的分区
数据类型日期 (DATE/DATETIME)
  • 字符串(BINARY 除外)
  • 日期 (DATE/DATETIME)
  • 整数和布尔值
  • 字符串(BINARY 除外)[1]
  • 日期或时间戳 [1]
  • 整数
  • 字符串(BINARY 除外)
  • 日期 (DATE/DATETIME)
  • 整数和布尔值
支持多个分区键/(仅支持一个日期类型分区键)
支持分区键的 Null 值/ [2]/ [2]
数据加载前手动创建分区/ [3]/ [3]
  • 如果手动批量创建分区,则为是
  • 如果采用动态分区策略,则为否
数据加载时自动创建分区//
注意
  • [1]:您需要使用 from_unixtime、str2date 或其他时间函数将列转换为日期类型。
  • [2]:从 v3.3.3 开始,列表分区的分区键将支持 Null 值。
  • [3]:自动创建分区。

有关列表分区和表达式分区之间的详细比较,请参阅列表分区和表达式分区之间的比较