本文為您介紹遷移 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 租戶不支援某些函數或運算式作為分區鍵。