全部產品
Search
文件中心

ApsaraDB for OceanBase:建立分區

更新時間:Jul 01, 2024

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