すべてのプロダクト
Search
ドキュメントセンター

PolarDB:パーティションを分割する

最終更新日:Jun 04, 2024

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
   );