PolarDB for PostgreSQL (Oracle互換) は、パーティションまたはサブパーティションの分割をサポートしています。 このトピックでは、構文と例について説明します。
構文
パーティションの分割
ALTER TABLE... SPLIT PARTITIONステートメントは、パーティションを2つに分割し、新しいパーティション間でデータを再分配します。
ALTER TABLE <table_name> 分割パーティション <partition_name>
AT (<range_part_value>)
INTO
(
PARTITION <new_part1>
[TABLESPACE <tablespace_name>]
PARTITION <new_part2>
[TABLESPACE <tablespace_name>]
);
ALTER TABLE <table_name> 分割パーティション <partition_name>
値 (<value>[, <value>]...)
INTO
(
PARTITION <new_part1>
[TABLESPACE <tablespace_name>]
PARTITION <new_part2>
[TABLESPACE <tablespace_name>]
);サブパーティションの分割
ALTER TABLE... SPLIT SUBPARTITIONステートメントは、サブパーティションを2つに分割し、新しいサブパーティション間でデータを再分配します。
ALTER TABLE <table_name> 分割サブパーティション <subpartition_name>
AT (range_part_value)
INTO
(
SUBPARTITION <new_subpart1>
[TABLESPACE <tablespace_name>] 、
SUBPARTITION <new_subpart2>
[TABLESPACE <tablespace_name>]
);
ALTER TABLE <table_name> 分割サブパーティション <subpartition_name>
値 (<value>[, <value>]...)
INTO
(
SUBPARTITION <new_subpart1>
[TABLESPACE <tablespace_name>] 、
SUBPARTITION <new_subpart2>
[TABLESPACE <tablespace_name>]
);ALTER TABLEを使用することができます... SPLIT SUBPARTITIONを実行して、既存のサブパーティションテーブルにサブパーティションを追加します。 定義できるサブパーティションの数に制限はありません。 ALTER TABLE...SPLIT SUBPARTITIONステートメントを実行すると、PolarDB for PostgreSQL (Compatible with Oracle) は2つの新しいサブパーティションを作成し、制約を満たすレコードをnew_subpart1に移動し、その他のレコードをnew_subpart2に移動します。
例
パーティションの分割
ALTER TABLE...SPLIT PARTITIONステートメントを使用して、既存のリストパーティションまたは範囲パーティションテーブルにパーティションを追加できます。
説明
ハッシュ分割テーブルはサポートされていません。
-- リストパーティションを分割する
ALTER TABLEセールス分割パーティションアメリカ
VALUES ('US')
に (PARTITION us、PARTITIONカナダ);
-範囲パーティションを分割する
ALTER TABLEセールス分割パーティションq4_2012
AT ('15-Nov-2012')
INTO
(
PARTITION q4_2012_p1,
PARTITION q4_2012_p2
);リストのサブパーティションの分割
テーブルの販売を作成する
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
金額番号
)
範囲によるパーティー (日付)
SUBPARTITION BY LIST (country)
(
PARTITION first_half_2012 VALUES LESS THAN('01-JUL-2012')
(
SUBPARTITION p1_europe VALUES ('ITALY', 'FRANCE'),
SUBPARTITION p1_americas VALUES ('US', 'CANADA')
),
PARTITION second_half_2012 VALUES LESS THAN('01-JAN-2013')
(
SUBPARTITION p2_europe VALUES ('ITALY', 'FRANCE'),
SUBPARTITION p2_americas VALUES ('US', 'CANADA')
)
);
ALTER TABLE sales SPLIT SUBPARTITION p2_americas
VALUES ('US')
INTO
(
SUBPARTITION p2_us,
SUBPARTITION p2_canada
);範囲サブパーティションの分割
テーブルの販売を作成する
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
金額番号
)
リストによるパーティー (国)
範囲によるサブパーティー (日付)
(
PARTITION europe VALUES('FRANCE', 'ITALY')
(
SUBPARTITION europe_2011
VALUES LESS THAN('2012-Jan-01'),
SUBPARTITION europe_2012
VALUES LESS THAN('2013-Jan-01')
),
PARTITION asia VALUES('INDIA', 'PAKISTAN')
(
SUBPARTITION asia_2011
VALUES LESS THAN('2012-Jan-01'),
SUBPARTITION asia_2012
VALUES LESS THAN('2013-Jan-01')
),
PARTITION americas VALUES('US', 'CANADA')
(
SUBPARTITION americas_2011
VALUES LESS THAN('2012-Jan-01'),
SUBPARTITION americas_2012
VALUES LESS THAN('2013-Jan-01')
)
);
ALTERテーブルの販売
分割SUBPARTITION americas_2012
AT('2012-Jun-01 ')
INTO
(
SUBPARTITION americas_p1_2012、
SUBPARTITION americas_p2_2012
);