功能边界:数据分布
本文档概述了 StarRocks 支持的分区和分桶功能。
支持的表类型
-
分桶
所有表类型均支持哈希分桶。随机分 桶从 v3.1 版本开始支持,仅支持明细表。
-
分区
从 v3.1 版本开始,表达式分区、Range 分区和 List 分区均支持所有表类型。
分桶
功能 | 关键功能点 | 支持状态 | 备注 |
---|---|---|---|
分桶策略 | 哈希分桶 | 是 | |
随机分桶 | 是 (v3.1+) | 随机分桶仅支持明细表。从 v3.2 版本开始,StarRocks 支持根据集群信息和数据大小动态调整创建的 Tablet 数量。 | |
分桶键数据类型 | 日期、整数、字符串 | 是 | |
分桶数量 | 自动设置分桶数量 | 是 (v3.0+) | 自动根据 BE 节点数量或最大历史分区的数据量确定。 后续版本对分区表和非分区表分别进行了优化。 |
随机分桶按需动态增加分桶数量 | 是 (v3.2+) |
分区
功能 | 关键功能点 | 支持状态 | 备注 |
---|---|---|---|
分区策略 | 表达式分区 | 是 (v3.1+) |
|
Range 分区 | 是 (v3.2+) | 从 v3.3.0 起,三种特定时间函数可用于分区键:from_unixtime、from_unixtime_ms、str2date、substr/substring。 | |
List 分区 | 是 (v3.1+) | ||
分区键数据类型 | 日期、整数、布尔值 | 是 | |
字符串 | 是 |
|
分区策略的区别
表达式分区 | Range 分区 | List 分区 | ||
---|---|---|---|---|
基于时间函数表达式的分区 | 基于列表达式的分区 | |||
数据类型 | 日期 (DATE/DATETIME) |
|
|
|
支持多个分区键 | /(仅支持一个日期类型的分区键) | 是 | 是 | 是 |
支持分区键的 Null 值 | 是 | / [2] | 是 | / [2] |
在数据导入前手动创建分区 | / [3] | / [3] |
| 是 |
在数据导入时自动创建分区 | 是 | 是 | / | / |
备注
-
[1]: 需要使用 from_unixtime、str2date 或其他时间函数将列转换为日期类型。
-
[2]: 从 v3.3.3 版本起,List 分区的分区键将支持 Null 值。
-
[3]: 分区将自动创建。
有关 List 分区和表达式分区的详细比较,请参阅 List 分区和表达式分区的区别。