首批通过分布式安全可靠测评,为关键业务系统打造
创建分区
更新时间:2026-04-14 15:40:37
本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 社区版时,CREATE TABLE DDL 创建分区支持的转换范围。
分区定义
partition_options:
PARTITION BY
{ [LINEAR] HASH(expr)
| [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)
| RANGE{(expr) | COLUMNS(column_list)}
| LIST{(expr) | COLUMNS(column_list)} }
[PARTITIONS num]
[SUBPARTITION BY
{ [LINEAR] HASH(expr)
| [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list) }
[SUBPARTITIONS num]
]
[(partition_definition [, partition_definition] ...)]
partition_definition:
PARTITION partition_name
[VALUES
{LESS THAN {(expr | value_list) | MAXVALUE}
|
IN (value_list)}]
[[STORAGE] ENGINE [=] engine_name]
[COMMENT [=] 'string' ]
[DATA DIRECTORY [=] 'data_dir']
[INDEX DIRECTORY [=] 'index_dir']
[MAX_ROWS [=] max_number_of_rows]
[MIN_ROWS [=] min_number_of_rows]
[TABLESPACE [=] tablespace_name]
[(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition:
SUBPARTITION logical_name
[[STORAGE] ENGINE [=] engine_name]
[COMMENT [=] 'string' ]
[DATA DIRECTORY [=] 'data_dir']
[INDEX DIRECTORY [=] 'index_dir']
[MAX_ROWS [=] max_number_of_rows]
[MIN_ROWS [=] min_number_of_rows]
[TABLESPACE [=] tablespace_name]
支持的范围
支持创建一级分区:RANGE 分区、 LIST 分区、HASH 分区和 KEY 分区。
支持创建二级分区:HASH 分区和 KEY 分区。
RANGE 分区、 LIST 分区、HASH 分区支持函数分区键(分区键为表达式或函数)和列分区键(分区键为字段),KEY 分区仅支持列分区键。
支持指定 PARTITIONS number 和 SUBPARTITIONS number。
不支持的范围
创建分区时,不支持创建 LINEAR HASH 分区和 LINEAR KEY 分区。
警告
如果同步的创建分区的 DDL 包含不支持的定义,则分区定义输出空,但是表结构会保留(分区定义被抛弃)。
忽略的属性
说明
如果同步的创建分区的 DDL 中包含以下属性的定义,则这些属性将不会被解析和转换,最终会被忽略。
分区定义中指定 ENGINE。
分区定义中指定 COMMENT。
分区定义中指定 DATA DIRECTORY。
分区定义中指定 INDEX DIRECTORY。
分区定义中指定 MAX_ROWS。
分区定义中指定 MIN_ROWS。
分区定义中指定 TABLESPACE。
指定 KEY 分区中的 ALGORITHM 算法:
PARTITION BY KEY ALGORITHM={1 | 2} (column_list) -> PARTITION BY KEY (column_list)
使用限制
注意
由于 OceanBase 社区版本身的限制,如果存在以下场景,同步的 DDL 被成功转换后,执行到 OceanBase 社区版可能会报错。
OceanBase 社区版不支持某些字段类型作为分区键。
OceanBase 社区版不支持某些函数或表达式作为分区键。