首批通过分布式安全可靠测评,为关键业务系统打造
随机分布表概述
更新时间:2026-07-29 10:39:51
OceanBase 数据库从 V5.0.1 版本开始基于随机分区(Random Partition)策略引入随机分布表(Random distribution table)。随机分布表利用随机分区机制,在写入时自动将数据打散并路由到集群的不同节点上,从而实现跨节点的负载均衡和高效扩展。
在底层实现上,随机分布表本质上是一种以内部自动生成的 INT64 类型列为分区键的 RANGE 分区表。写入时,系统会根据一个称为 Tablet Seq 的序列号,将数据路由至不同的活跃分区(Active Partition),确保数据在多个 OBServer 节点之间均匀分布,避免热点问题,同时提升写入性能和资源利用率。
功能特性
- 无需指定分区键(无主键表):系统自动生成隐藏的自增主键列(
__pk_increment)用于分区路由。 - 数据随机均匀分布:
INSERT操作时系统在活跃分区中随机选择目标分区。 - 自动分区管理:当序列值耗尽时自动创建新分区,根据租户可用日志流(
LS)数量动态扩展。 - 对用户透明:兼容模式下
SHOW CREATE TABLE输出标准 MySQL DDL,隐藏分区细节。
适用场景
- 日志/流水表等对查询分区路由无要求的追加写入场景。
- 需要横向扩展写入吞吐量的大规模数据导入场景。
- 不需要按特定列进行分区裁剪的场景。
使用限制
- 不支持有局部唯一索引的表。
- 不支持对随机分布表做分区操作:
DROP/SPLIT/EXCHANGE/TRUNCATE PARTITION。 - 不支持将非随机分布表转换为随机分布表。
- 随机分布表不支持加入表组。
随机分布表 DML 操作
- 随机分布表的
INSERT操作与普通表完全一致,系统自动处理分区路由。 - 随机分布表的
SELECT/UPDATE/DELETE操作与普通表完全一致。 - 随机分布表的
REPLACE操作需要表上有唯一键约束(必须为GLOBAL唯一索引)。
运维注意事项
DROP DATABASE等慢 DDL:可能卡住前台写入,因为活跃分区写满后无法及时加新分区。- 全量旁路导入(
APPEND):分区方案基于语句开始时的 Schema,无法感知导入过程中新增的分区。若分区不足会直接报错。