全部產品
Search
文件中心

PolarDB:REORGANIZE PARTITION

更新時間:Jul 17, 2024

本文檔介紹了如何對錶的部分分區、全部分區及其所有的子分區重新組織分區結構,並且不遺失資料的方法。

文法

ALTER TABLE…REORGANIZE PARTITION命令用於對錶的部分分區、全部分區及其所有的子分區重新組織分區結構,並且不遺失資料:

ALTER TABLE table_name
    REORGANIZE PARTITION partition_names INTO (partition_definitions)

其中,partition_definitions為:

{list_partition | range_partition}
  • list_partition為:

    PARTITION partition_name
    VALUES IN (value[, value]...)
    (subpartition, ...)
  • range_partition為:

    PARTITION partition_name
    VALUES LESS THAN (value[, value]...)
    (subpartition, ...)

其中,subpartition為:

{list_subpartition | range_subpartition | hash_partition | key_partition}
  • list_subpartition為:

    SUBPARTITION [subpartition_name]
    VALUES IN (value[, value]...)
    [TABLESPACE tablespace_name]
  • range_subpartition為:

    SUBPARTITION [subpartition_name ]
    VALUES LESS THAN (value[, value]...)
    [TABLESPACE tablespace_name]
  • hash/key_subpartition為:

    SUBPARTITION [subpartition_name ]
    [TABLESPACE tablespace_name]

參數

參數

說明

table_name

表名。

list_partition

需要更改的一個或多個現有分區的名稱列表,以逗號分隔。

partition_definitions

以逗號分隔的新分區定義列表。

partition_name

需要建立的分區名稱。

說明

分區名稱在所有分區和子分區中必須是唯一的,且必須遵循給物件識別碼命名的慣例。

subpartition_name

需要建立的子分區名稱。

說明

子分區名稱在所有分區和子分區中必須是唯一的,且必須遵循給物件識別碼命名的慣例。

樣本

  • 拆分sales_range_range表分區p0p0_1p0_2,及其對應的所有子分區:

    ALTER TABLE sales_range_range REORGANIZE PARTITION p0 INTO (
        PARTITION p0_1 VALUES LESS THAN (500)(
        SUBPARTITION q1_2021_1 VALUES LESS THAN(200),
        SUBPARTITION q2_2021_1 VALUES LESS THAN(300),
        SUBPARTITION q3_2021_1 VALUES LESS THAN(400),
        SUBPARTITION q4_2021_1 VALUES LESS THAN(500)
      ),
        PARTITION p0_2 VALUES LESS THAN (1000)(
        SUBPARTITION q1_2021_2 VALUES LESS THAN(600),
        SUBPARTITION q2_2021_2 VALUES LESS THAN(700),
        SUBPARTITION q3_2021_2 VALUES LESS THAN(800),
        SUBPARTITION q4_2021_2 VALUES LESS THAN(1000)
      )
    );
  • 拆分sales_range_hash表分區p1p1_1p1_2,及其對應的所有子分區:

    ALTER TABLE sales_range_hash REORGANIZE PARTITION p1 INTO (
        PARTITION p1_1 VALUES LESS THAN ('2022-12-01')(
        SUBPARTITION s0_1 VALUES LESS THAN ('2022-12-05'),
        SUBPARTITION s1_1 VALUES LESS THAN ('2022-12-10'),
        SUBPARTITION s2_1 VALUES LESS THAN ('2022-12-15')
      ),
        PARTITION p1_2 VALUES LESS THAN ('2023-01-01')(
        SUBPARTITION s0_2 VALUES LESS THAN ('2022-12-20'),
        SUBPARTITION s1_2 VALUES LESS THAN ('2022-12-25'),
        SUBPARTITION s2_2 VALUES LESS THAN ('2022-12-30')
      )
    );
  • 修改3個分區p0p1p2q1q2q3

    ALTER TABLE sales_list_hash REORGANIZE PARTITION p0,p1,p2 INTO (
                 PARTITION q1 VALUES in (1,2)(
                SUBPARTITION s0,
                SUBPARTITION s1
            ),
            PARTITION q2 VALUES in (3,4)(
                SUBPARTITION s3,
                SUBPARTITION s4
            ),
            PARTITION q3 VALUES in (5,6)(
                SUBPARTITION s5,
                SUBPARTITION s6
            )
    );