使用上の注意
レベル1のパーティションを再編成するには、Alibaba Cloud PolarDB for Xscale (PolarDB-X) インスタンスのバージョンが5.4.14-16539836以降である必要があります。
レベル2のパーティションを再編成するには、PolarDB-Xインスタンスのバージョンが5.4.17-16952556以降である必要があります。
HASH、KEY、またはCO_HASHのパーティション分割方法を使用してパーティション分割されたテーブルのパーティションを再編成することはできません。
パーティションを再編成する場合、新しいパーティションの境界値の範囲は、再編成された元のパーティションの境界値の範囲と一致している必要があります。
用語
テーブルグループ: 同一のパーティションキー列を共有する論理テーブルまたはグローバルインデックステーブルのコレクション。
グローバルインデックス: グローバルインデックス作成は、パーティションテーブルのインデックス作成手法です。 非パーティションキーを使用して、パーティションテーブルにグローバルインデックスを作成できます。 グローバルインデックスは、一意の制約を提供できます。
構文
ALTER alter_target_definition reorg_partition_operation_definition
alter_target_definition:
TABLE [db_name.]tbl_name
| TABLE tbl_name.index_name
| TABLEGROUP tg_name
| INDEX index_name ON TABLE [db_name.]tbl_name
| TABLEGROUP BY TABLE [db_name.]tbl_name
| TABLEGROUP BY INDEX index_name ON TABLE [db_name.]tbl_name
reorg_partition_operation_definition:
パーティションの再編成part_name_list (partition_specs_definition)
| REORGANIZE SUBPARTITION subpart_name_list INTO (subpartition_specs_definition)
| MODIFY PARTITION part_name REORGANIZE SUBPARTITION subpart_name_list INTO (subpartition_specs_definition)
part_name_list:
part_name[,part_name,...,]
subpart_name_list:
subpart_name[,subpart_name,...,]
partition_specs_definition:
range_partition_list
| list_partition_list
subpartition_specs_definition:
range_subpartition_list
| list_subpartition_list
range_partition_list:
(range_partition [, range_partition, ... ] )
range_partition:
PARTITION partition_name未満の値 (range_bound_value)
# RANGEまたはRANGE COLUMNSレベル2パーティションを指定します。
range_subpartition_list:
(range_subpartition [, range_subpartition, ... ] )
range_subpartition:
SUBPARTITION subpartition_name VALUES LESS THAN (range_bound_value) [partition_spec_options]
list_partition_list:
(list_partition [, list_partition ...])
list_partition:
PARTITION partition_name VALUES IN (list_bound_value) [partition_spec_options]
# LISTまたはLIST COLUMNSレベル2パーティションを指定します。
list_subpartition_list:
(list_subpartition [, list_subpartition ...])
list_subpartition:
SUBPARTITION subpartition_name VALUES IN (list_bound_value) [partition_spec_options]
シナリオ1: レベル2パーティションを含まないレベル1パーティションの再編成
例1: 複数のRANGEレベル1パーティションの再編成
この例では、r_t1およびr_t2テーブルは、RANGE分割方法を使用して分割される。 次のSQL文を実行して、テーブルを作成できます。
CREATE TABLE 'r_t1' (
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
(
PARTITION p0の値は (2020) 未満、
パートp1の値は (2023) 未満、
PARTITION p2の値は (2025) より少なく、
PARTITION p3の値がより少ない (2027)
);
テーブル 'r_t2' の作成 (
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
(
PARTITION p0の値は (2020) 未満、
パートp1の値は (2023) 未満、
PARTITION p2の値は (2025) より少なく、
PARTITION p3の値がより少ない (2027)
);
次のステートメントを実行して、r_t1テーブルの3つの連続したパーティションp1、p2、p3をp4パーティションとp5パーティションに再編成できます。 p4およびp5パーティションは、(PARTITION p4 VALUES LESS THAN (2024) 、PARTITION p5 VALUES LESS THAN (2027))
句を使用することによって定義される。 次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE r_t1 /* テーブル名 * /
パーティションの再編成p1、p2、p3 INTO
(
パートp4の値は (2024) 未満、
パートp5の値がより少ない (2027)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのr_t1テーブルとr_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。 この例では、テーブルグループ名はtg1です。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
パーティションの再編成p1、p2、p3 INTO
(
パートp4の値は (2024) 未満、
パートp5の値がより少ない (2027)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE r_t1 /* テーブル名 * /
パーティションの再編成p1、p2、p3 INTO
(
パートp4の値は (2024) 未満、
パートp5の値がより少ない (2027)
);
例2: 複数のLISTレベル1パーティションの再編成
この例では、l_t1およびl_t2テーブルは、LIST分割方法を使用して分割されます。 次のステートメントを実行して、テーブルを作成できます。
CREATE TABLE 'l_t1' (
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
リストによるパーティー (YEAR('c'))
(
PARTITION p0の値 (2020,2022、2024,2026、2028) 、
パーティションp1値 (2021,2023、2025,2027、2029) 、
PARTITION p2の値 (2030,2031、2032)
);
CREATE TABLE 'l_t2' (
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
リストによるパーティー (YEAR('c'))
(
PARTITION p0の値 (2020,2022、2024,2026、2028) 、
パーティションp1値 (2021,2023、2025,2027、2029) 、
PARTITION p2の値 (2030,2031、2032)
);
次のステートメントを実行して、l_t1テーブルのp0およびp1レベル1パーティションをp3およびp4レベル1パーティションに再編成できます。 p3およびp4レベル1パーティションは、( PARTITION p3 VALUES IN (2020,2021、2022,2023、2024) 、PARTITION p4 VALUES IN (2025,2026、2027,2028、2029))
句を使用することによって定義される。 次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE l_t1 /* テーブル名 * /
再編成パーティションp0、p1 INTO
(
PARTITION p3の値 (2020,2021、2022,2023、2024) 、
PARTITION p4の値 (2025,2026、2027,2028、2029)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのl_t1テーブルとl_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
再編成パーティションp0、p1 INTO
(
PARTITION p3の値 (2020,2021、2022,2023、2024) 、
PARTITION p4の値 (2025,2026、2027,2028、2029)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE l_t1 /* テーブル名 * /
パーティションの再編成p0、p1 INTO
(
PARTITION p3の値 (2020,2021、2022,2023、2024) 、
PARTITION p4の値 (2025,2026、2027,2028、2029)
);
シナリオ2: レベル2パーティションを含むレベル1パーティションの再編成
例1: 複数のレベル1パーティションの再編成とレベル2パーティションの定義
テンプレート化されていないレベル2パーティションを含むレベル1パーティションのみを再編成し、テンプレート化されていないレベル2パーティションを定義できます。
この例では、r_k_ntp_t1およびr_k_ntp_t2という名前のパーティションテーブルは、テンプレート化されていないレベル2パーティションを含みます。 次のSQL文を実行して、テーブルを作成できます。
CREATE TABLE 'r_k_ntp_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
キーによるサブパート (a)
(
パートp0は (2020) サブパート2よりも少ない値を示し、
パートp1は (2021) サブパートよりも少ない値4、パートp2は (2022) サブパート2よりも少ない値であり、パーティーp3は (2023) のサブパーティー3よりも価値があります
);
CREATE TABLE 'r_k_ntp_t2 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
キーによるサブパート (a)
(
パートp0は (2020) サブパート2よりも少ない値を示し、
パートp1は (2021) サブパートよりも少ない値4、パートp2は (2022) サブパート2よりも少ない値であり、パーティーp3は (2023) のサブパーティー3よりも価値があります
);
次のステートメントを実行して、r_k_ntp_t1テーブルのp1およびp2レベル1パーティションをp4レベル1パーティションに再編成できます。 p4レベル1パーティションは、partition p2 VALUES LESS THAN (2022) SUBPARTITIONS 4
句を使用して定義されます。 次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE r_k_ntp_t1 /* テーブル名 * /
パーティションの再編成p1、p2 INTO
(
パートp4は (2022) サブパート1よりも少ない値を示します
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのr_k_ntp_t1テーブルとr_k_ntp_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
パーティションの再編成p1、p2 INTO
(
パートp4は (2022) サブパート1よりも少ない値を示します
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE r_k_ntp_t1 /* テーブル名 * /
パーティションの再編成p1、p2 INTO
(
パートp4は (2022) サブパート1よりも少ない値を示します
);
例2: レベル2パーティションを定義せずに複数のレベル1パーティションを再編成する
この再編成方法は、テンプレート化または非テンプレート化レベル2パーティションを含む両方のテーブルに適用されます。
この例の操作は、「シナリオ1: レベル2パーティションを含まないレベル1パーティションの再編成」セクションの操作と同様です。 次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE r_k_ntp_t1 /* テーブル名 * /
パーティションの再編成p1、p2 INTO
(
パートp4の値がより少ない (2022)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのr_k_ntp_t1テーブルとr_k_ntp_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
パーティションの再編成p1、p2 INTO
(
パートp4の値がより少ない (2022)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE r_k_ntp_t1 /* テーブル名 * /
パーティションの再編成p1、p2 INTO
(
パートp4の値がより少ない (2022)
);
シナリオ3: テンプレート化されたレベル2パーティションの再編成
複数のテンプレート化されたレベル2パーティションを再編成すると、すべてのレベル1パーティションの下にある対応するレベル2パーティションが同時に再編成されます。
例1: 複数のRANGEレベル2パーティションの再編成
この例では、k_r_tp_t1およびk_r_tp_t2という名前のKEY − RANGE区分テーブルは、テンプレート化レベル2区分を含む。 次のSQL文を実行して、テーブルを作成できます。
CREATE TABLE 'k_r_tp_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
キーによるパーティー ('a') パーティー2
範囲によるサブパート ('b')
(
SUBPARTITION sp0値は (1000) 未満、
SUBPARTITION sp1の値は (2000) 未満、
下位分類sp2の値は (3000) より少なく、
下位分類sp3の値がより少ない (4000)
);
CREATE TABLE 'k_r_tp_t2 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
キーによるパーティー ('a') パーティー2
範囲によるサブパート ('b')
(
SUBPARTITION sp0値は (1000) 未満、
SUBPARTITION sp1の値は (2000) 未満、
下位分類sp2の値は (3000) より少なく、
下位分類sp3の値がより少ない (4000)
);
対応するステートメントを実行して、k_r_tp_t1テーブルのsp1およびsp2レベル2パーティションをsp4、sp5、およびsp6レベル1パーティションに再編成できます。 sp4、sp5、およびsp6のレベル1パーティションは、次の句を使用して定義されます。
(
下位分類sp4の値は (2500) 未満、
SUBPARTITION sp5の値がより少ない (2800) 、
下位分類sp6の値がより少ない (3000)
)
次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE k_r_tp_t1 /* テーブル名 * /
分割sp1、sp2 INTOを再編成
(
下位分類sp4の値は (2500) 未満、
SUBPARTITION sp5の値がより少ない (2800) 、
下位分類sp6の値がより少ない (3000)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのk_r_tp_t1テーブルとk_r_tp_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
分割sp1、sp2 INTOを再編成
(
下位分類sp4の値は (2500) 未満、
SUBPARTITION sp5の値がより少ない (2800) 、
下位分類sp6の値がより少ない (3000)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE k_r_tp_t1 /* テーブル名 * /
分割sp1、sp2 INTOを再編成
(
下位分類sp4の値は (2500) 未満、
SUBPARTITION sp5の値がより少ない (2800) 、
下位分類sp6の値がより少ない (3000)
);
例2: 複数のLISTレベル2パーティションの再編成
この例では、k_l_tp_t1およびk_l_tp_t2テーブルは、LISTパーティショニングメソッドを使用してパーティショニングされます。 次のSQL文を実行して、テーブルを作成できます。
CREATE TABLE 'k_l_tp_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
キーによるパーティー ('a') パーティー2
リストによるサブパート (YEAR('c'))
(
SUBPARTITION sp0の値 (2020,2022、2024,2026、2028) 、
下位分類sp1値 (2021,2023、2025,2027、2029) 、
下位分類sp2値 (2030,2031、2032)
);
CREATE TABLE 'k_l_tp_t2 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
キーによるパーティー ('a') パーティー2
リストによるサブパート (YEAR('c'))
(
SUBPARTITION sp0の値 (2020,2022、2024,2026、2028) 、
下位分類sp1値 (2021,2023、2025,2027、2029) 、
下位分類sp2値 (2030,2031、2032)
);
対応するステートメントを実行して、k_l_tp_t1テーブルのsp0およびsp1テンプレートレベル2パーティションをsp3およびsp4レベル2パーティションに再編成できます。 sp3およびsp4レベル2パーティションは、次の句を使用して定義されます。
(
下位分類sp3値 (2020,2021、2022,2023、2024) 、
下位分類sp4値 (2025,2026、2027,2028、2029)
)
次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE k_l_tp_t1 /* テーブル名 * /
分割sp0、sp1 INTOを再編成
(
下位分類sp3値 (2020,2021、2022,2023、2024) 、
下位分類sp4値 (2025,2026、2027,2028、2029)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのk_l_tp_t1テーブルとk_l_tp_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
分割sp0、sp1 INTOを再編成
(
下位分類sp3値 (2020,2021、2022,2023、2024) 、
下位分類sp4値 (2025,2026、2027,2028、2029)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE k_l_tp_t1 /* テーブル名 * /
分割sp0、sp1 INTOを再編成
(
下位分類sp3値 (2020,2021、2022,2023、2024) 、
下位分類sp4値 (2025,2026、2027,2028、2029)
);
シナリオ4: テンプレート化されていないレベル2パーティションの再編成
テンプレート化されていないレベル2パーティションの場合、単一のレベル1パーティションの下でレベル2パーティションを個別に再編成できます。
例1: 指定したレベル1パーティションの下に複数のRANGEレベル2パーティションを再編成する
この例では、l_r_ntp_t1およびl_r_ntp_t2という名前のLIST − RANGE区分テーブルは、テンプレート化されていないレベル2区分を含む。 次のステートメントを実行して、テーブルを作成できます。
CREATE TABLE 'l_r_ntp_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
リストによるパーティー ('a')
範囲によるサブパート ('b')
(
PARTITION p0の値 (2020,2022) (
SUBPARTITION p0sp0値は (1000) 未満、
サブパートp0sp1の値が (2000) よりも少ない、
SUBPARTITION p0sp2の値は (3000) より少なく、
下位分類p0sp3の値がより少ない (4000)
),
パーティションp1の値 (2021,2023) (
サブパートp1sp0値は (1500) よりも少なく、
サブパートp1sp1の値が (2500) 未満、
下位分類p1sp2値は (3500) よりも少なく、
サブパートp1sp3値がより少ない (4500)
)
);
CREATE TABLE 'l_r_ntp_t2 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
リストによるパーティー ('a')
範囲によるサブパート ('b')
(
PARTITION p0の値 (2020,2022) (
SUBPARTITION p0sp0値は (1000) 未満、
サブパートp0sp1の値が (2000) よりも少ない、
SUBPARTITION p0sp2の値は (3000) より少なく、
下位分類p0sp3の値がより少ない (4000)
),
パーティションp1の値 (2021,2023) (
サブパートp1sp0値は (1500) よりも少なく、
サブパートp1sp1の値が (2500) 未満、
下位分類p1sp2値は (3500) よりも少なく、
サブパートp1sp3値がより少ない (4500)
)
);
対応するステートメントを実行して、l_r_ntp_t1テーブルのp0レベル1パーティション下のp0sp1およびp0sp2レベル2パーティションを、p0sp4、p0sp5、およびp0sp6レベル2パーティションに再編成できます。 p0sp4、p0sp5、およびp0sp6レベル2パーティションは、次の句を使用して定義されます。
(
SUBPARTITION p0sp4値は (2500) 未満、
サブパートp0sp5値が (2800) 未満、
下位分類p0sp6の値がより少ない (3000)
)
次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE l_r_ntp_t1 /* テーブル名 * /
分割p0sp1、p0sp2を再編成する
(
SUBPARTITION p0sp4値は (2500) 未満、
サブパートp0sp5値が (2800) 未満、
下位分類p0sp6の値がより少ない (3000)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのl_r_ntp_t1テーブルとl_r_ntp_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
分割p0sp1、p0sp2を再編成する
(
SUBPARTITION p0sp4値は (2500) 未満、
サブパートp0sp5値が (2800) 未満、
下位分類p0sp6の値がより少ない (3000)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY l_r_ntp_t1 /* テーブル名 * /
分割p0sp1、p0sp2を再編成する
(
SUBPARTITION p0sp4値は (2500) 未満、
サブパートp0sp5値が (2800) 未満、
下位分類p0sp6の値がより少ない (3000)
);
例2: 指定したレベル1パーティションの下にある複数のLISTレベル2パーティションの再編成
この例では、r_l_ntp_t1およびr_l_ntp_t2という名前のLIST − RANGE区分テーブルは、テンプレート化されていないレベル2区分を含む。 次のステートメントを実行して、テーブルを作成できます。
CREATE TABLE 'r_l_ntp_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
リストによるサブパート ('b')
(
PARTITION p0値が (2020) 未満 (
サブパートp0sp0値 (2020,2022、2024,2026、2028) 、
サブパートp0sp1値 (2021,2023、2025,2027、2029) 、
サブパートp0sp2の値 (2030,2031)
),
パートp1の値が (2022) 未満 (
サブパートp1sp0値 (2020,2022、2024,2026、2028) 、
サブパートp1sp1値 (2021,2023、2025,2027、2029) 、
サブパートp1sp2の値 (2030)
)
);
CREATE TABLE 'r_l_ntp_t2 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
リストによるサブパート ('b')
(
PARTITION p0値が (2020) 未満 (
サブパートp0sp0値 (2020,2022、2024,2026、2028) 、
サブパートp0sp1値 (2021,2023、2025,2027、2029) 、
サブパートp0sp2の値 (2030,2031)
),
パートp1の値が (2022) 未満 (
サブパートp1sp0値 (2020,2022、2024,2026、2028) 、
サブパートp1sp1値 (2021,2023、2025,2027、2029) 、
サブパートp1sp2の値 (2030)
)
);
対応するステートメントを実行して、r_l_ntp_t1テーブルのp0レベル1パーティション下のp0sp0およびp0sp1レベル2パーティションをp0sp4およびp0sp5レベル2パーティションに再編成できます。 p0sp4およびp0sp5レベル2パーティションは、次の句を使用して定義されます。
(
サブパートp0sp4値 (2020,2021、2022,2023、2024) 、
サブパートp0sp5値 (2025,2026、2027,2028、2029)
)
次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## テーブル名に基づいてテーブルのパーティションを再編成します。
ALTER TABLE r_l_ntp_t1 /* テーブル名 * /
再編成サブパーツp0sp0、p0sp1 INTO
(
サブパートp0sp4値 (2020,2021、2022,2023、2024) 、
サブパートp0sp5値 (2025,2026、2027,2028、2029)
);
テーブルグループのパーティションの再編成
次のステートメントを実行して、tg1テーブルグループのr_l_ntp_t1テーブルとr_l_ntp_t2テーブルの両方のパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
分割p0sp0、p0sp1 INTOを再編成
(
サブパートp0sp4値 (2020,2021、2022,2023、2024) 、
サブパートp0sp5値 (2025,2026、2027,2028、2029)
);
## テーブル名に基づいて、同じテーブルグループ内のテーブルのパーティションを再編成します。 指定したテーブル名に基づいてテーブルグループが自動的に見つかり、テーブルグループ内の対応するパーティションが再編成されます。
ALTER TABLEGROUP BY TABLE r_l_ntp_t1 /* テーブル名 * /
分割p0sp0、p0sp1 INTOを再編成
(
サブパートp0sp4値 (2020,2021、2022,2023、2024) 、
サブパートp0sp5値 (2025,2026、2027,2028、2029)
);
シナリオ5: グローバルインデックステーブルのパーティションの再編成
例1: 指定したグローバルインデックステーブルの複数のRANGEレベル1パーティションの再編成
この例では、r_gr_t1テーブルにg_rというグローバルインデックステーブルが含まれています。 次のSQL文を実行して、r_gr_t1テーブルを作成できます。
CREATE TABLE 'r_gr_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL,
グローバルインデックス 'g_r' ('a') カバー ('c')
レンジによるパーティー ('a')
(PARTITION 'p0' の値は (10000) よりも低く、PARTITION 'p1' 値は (20000) 未満、PARTITION 'p2' 値は (30000) 未満、
PARTITION 'p3' の値は (40000) よりも少ない
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
(PARTITION 'p0' の値は (2020) よりも低く、
PARTITION 'p1' 値は (2021) 未満です。
対応するSQL文を実行して、r_gr_t1テーブルのg_rグローバルインデックステーブルのp0、p1、およびp2レベル1のパーティションをp4およびp5レベル1のパーティションに再編成できます。 p4およびp5レベル1パーティションは、次の句を使用して定義されます。
(
PARTITION sp4の値は (15000) 未満、
PARTITION sp5値がより少ない (30000)
)
次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## 'テーブル名'.'グローバルインデックス名' に基づいて、グローバルインデックステーブルのパーティションを再編成します。
ALTER TABLE 'r_gr_t1 '.'g_r'
パーティションの再編成p0、p1、p2 INTO
(
パートp4の値は (15000) 未満、
パートp5の値がより少ない (30000)
);
## 「グローバルインデックス名」on TALBE「テーブル名」に基づいて、グローバルインデックステーブルのパーティションを再編成します。
ALTER INDEX 'g_r'/* グローバルインデックス名 */ ON TABLE 'r_gr_t1 '/* テーブル名 * /
パーティションの再編成p0、p1、p2 INTO
(
パートp4の値は (15000) 未満、
パートp5の値がより少ない (30000)
);
テーブルグループのパーティションの再編成
次の文を実行してtg1テーブルグループのパーティションを再編成します。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。 この例では、グローバルインデックステーブルが属するテーブルグループの名前はtg1です。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
パーティションの再編成p0、p1、p2 INTO
(
パートp4の値は (15000) 未満、
パートp5の値がより少ない (30000)
);
## 「グローバルインデックス名」に基づいて、同じテーブルグループ内のグローバルインデックステーブルのパーティションを再編成します。
ALTER TABLEGROUP BY INDEX 'g_r'/* グローバルインデックス名 */ ON TABLE 'r_gr_t1 '/* テーブル名 * /
パーティションの再編成p0、p1、p2 INTO
(
パートp4の値は (15000) 未満、
パートp5の値がより少ない (30000)
);
例2: 指定したグローバルインデックステーブルの複数のLISTレベル2パーティションの再編成
この例では、パーティションテーブルr_g_kl_t1には、g_klというグローバルインデックステーブルが含まれています。 KEY − LISTグローバルインデックステーブルg_klは、レベル2のパーティションを含む。 次のSQL文を実行して、r_g_kl_t1テーブルを作成できます。
CREATE TABLE 'r_g_kl_t1 '(
'a' bigint(20) UNSIGNED NOT NULL、'b' bigint (20) UNSIGNED NOT NULL,
'c' datetime NOT NULL,
'd' varchar (16) NOT NULL,
'e' varchar (16) NOT NULL,
グローバルインデックス 'g_kl' ('a' 、'b') COVERING ('c')
キーによるパーティー ('b') パーティー2
リストによるサブパート ('a')
(
サブパート「sp0」の値 (10000,10002、10004,10006、10008) 、サブパート 'sp1' 値 (20000,20001、20002,20003、20004) 、
サブパート「sp2」の値 (30000,30001、30002)
)
) エンジン=InnoDBデフォルト料金=utf8mb4
レンジによるパーティー (年 ('c'))
(PARTITION 'p0' の値は (2020) よりも低く、
PARTITION 'p1' 値は (2021) 未満です。
対応するSQL文を実行して、r_g_kl_t1テーブルのg_k_lグローバルインデックステーブルのsp1およびsp2レベル2パーティションをsp4およびsp5レベル2パーティションに再編成できます。 sp4およびsp5レベル2パーティションは、次の句を使用して定義されます。
(
サブパート「sp4」の値 (20000,20001、20002) 、
サブパート「sp5」の値 (20003,20004、30000,30001、30002)
)
次のセクションでは、パーティションの再編成に使用されるステートメントについて説明します。
テーブルのパーティションの再編成
## 'テーブル名'.'グローバルインデックス名' に基づいて、グローバルインデックステーブルのパーティションを再編成します。
ALTER TABLE 'r_g_kl_t1 '.'g_kl'
分割sp1、sp2 INTOを再編成
(
サブパート「sp4」の値 (20000,20001、20002) 、
サブパート「sp5」の値 (20003,20004、30000,30001、30002)
);
## 「グローバルインデックス名」on TALBE「テーブル名」に基づいて、グローバルインデックステーブルのパーティションを再編成します。
ALTER INDEX g_kl/* グローバルインデックス名 */ ON TABLE 'r_g_kl_t1 ' /* テーブル名 * /
分割sp1、sp2 INTOを再編成
(
サブパート「sp4」の値 (20000,20001、20002) 、
サブパート「sp5」の値 (20003,20004、30000,30001、30002)
);
テーブルグループのパーティションの再編成
同じテーブルグループ内のすべての論理テーブルのパーティションを再編成します。 この例では、次のステートメントを実行して、tg1テーブルグループ内のすべてのグローバルインデックステーブルのパーティションを再編成できます。
# テーブルグループ名に基づいてテーブルグループ内のパーティションを再編成します。 この例では、グローバルインデックステーブルが属するテーブルグループの名前はtg1です。
ALTER TABLEGROUP tg1 /* テーブルグループ名 * /
分割sp1、sp2 INTOを再編成
(
サブパート「sp4」の値 (20000,20001、20002) 、
サブパート「sp5」の値 (20003,20004、30000,30001、30002)
);
## index「グローバルインデックス名」on TALBE「テーブル名」に基づいて、同じテーブルグループ内のすべてのグローバルインデックステーブルのパーティションを再編成します。
ALTER TABLEGROUP BY INDEX 'g_kl'/* グローバルインデックス名 */ ON TABLE 'r_g_kl_t1 '/* テーブル名 * /
分割sp1、sp2 INTOを再編成
(
サブパート「sp4」の値 (20000,20001、20002) 、
サブパート「sp5」の値 (20003,20004、30000,30001、30002)
);