基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
创建分区
更新时间:2023-11-03 17:58:24
本文为您介绍迁移 MySQL 数据库的数据至 OceanBase 数据库 MySQL 租户时,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 数据库 MySQL 租户本身的限制,如果存在以下场景,同步的 DDL 被成功转换后,执行到 OceanBase 数据库 MySQL 租户可能会报错。
OceanBase 数据库 MySQL 租户不支持某些字段类型作为分区键。
OceanBase 数据库 MySQL 租户不支持某些函数或表达式作为分区键。