功能支持:数据分布
本文档概述了 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.2+) | 自 v3.3.0 起,三个特定的时间函数可用于分区键:from_unixtime、from_unixtime_ms、str2date、substr/substring。 | |
列表分区 | 是 (v3.1+) | ||
分区键数据类型 | 日期、整数、布尔值 | 是 | |
字符串 | 是 |
|
分区策略之间的差异
表达式分区 | 范围分区 | 列表分区 | ||
---|---|---|---|---|
基于时间函数表达式的分区 | 基于列表达式的分区 | |||
数据类型 | 日期 (DATE/DATETIME) |
|
|
|
支持多个分区键 | /(仅支持一个日期类型分区键) | 是 | 是 | 是 |
支持分区键的 Null 值 | 是 | / [2] | 是 | / [2] |
数据加载前手动创建分区 | / [3] | / [3] |
| 是 |
数据加载时自动创建分区 | 是 | 是 | / | / |
注意
- [1]:您需要使用 from_unixtime、str2date 或其他时间函数将列转换为日期类型。
- [2]:从 v3.3.3 开始,列表分区的分区键将支持 Null 值。
- [3]:自动创建分区。
有关列表分区和表达式分区之间的详细比较,请参阅列表分区和表达式分区之间的比较。