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

PolarDB:PolarDB-X のサブパーティション化

最終更新日:Feb 20, 2025

MySQL のサブパーティション化と同様に、PolarDB-X では、サブパーティション化構文を使用して、サブパーティションを含むパーティションテーブルを作成できます。サブパーティション化とは、指定されたパーティションキー列とパーティション化ポリシーに基づいて、パーティションテーブル内のパーティションをさらに分割することです。

サブパーティションを含むパーティションテーブルには、次の特性があります。

  • 各パーティションは、サブパーティションのセットである論理パーティションになります。

  • 各サブパーティションは、データノード上の特定の物理テーブルに対応する物理パーティションになります。

サポートされているバージョン

インスタンスバージョンは 5.4.17-16952556 以降である必要があります。

説明

パーティションとサブパーティションの直交関係

PolarDB-X は、パーティションとサブパーティションの両方で、次の 7 つのパーティション化ポリシーをサポートしています。

そのため、PolarDB-X のパーティションとサブパーティションは完全に直交関係にあります。任意の 2 つのパーティション化ポリシーを組み合わせて、最大 49 の複合パーティション化ポリシーを構成できます。

テンプレート化されたサブパーティション化とテンプレート化されていないサブパーティション化

PolarDB-X は、テンプレート化されたサブパーティション化とテンプレート化されていないサブパーティション化をサポートしています。

PolarDB-X の 49 の複合パーティション化ポリシーはそれぞれ、テンプレート化されたサブパーティション化とテンプレート化されていないサブパーティション化をサポートしています。

テンプレート化されたサブパーティション化

テンプレート化されたサブパーティション化とは、テーブルのすべてのパーティションで、サブパーティションの数と境界値が同じであることを示します。例:

/*
 * LIST COLUMNS パーティション化と KEY パーティション化に基づいて、テンプレート化されたサブパーティションを指定します。
 * テーブルは、LIST COLUMNS パーティション化に基づいて 3 つのパーティションに分割されます。
 * 各パーティションは、KEY パーティション化に基づいて 4 つのサブパーティションに分割されます。
 * したがって、物理パーティションの総数は 12 です。
*/
CREATE TABLE sp_tbl_list_key_tp(
 id int, 
 country varchar(64),
 city varchar(64),
 order_time datetime not null,
 PRIMARY KEY(id)
)
PARTITION BY LIST COLUMNS(country,city) 
SUBPARTITION BY KEY(id) SUBPARTITIONS 4
(
  PARTITION p1 VALUES IN (('China','Hangzhou')),
  PARTITION p2 VALUES IN (('Russian','Moscow')),
  PARTITION pd VALUES IN (DEFAULT)
);

テンプレート化されていないサブパーティション化

テンプレート化されていないサブパーティション化とは、テーブルのすべてのパーティションで、サブパーティションの数と境界値が異なる場合があることを示します。例:

/*
 * LIST COLUMNS パーティション化と KEY パーティション化に基づいて、テンプレート化されていないサブパーティションを指定します。
 * テーブルは、LIST COLUMNS パーティション化に基づいて 3 つのパーティションに分割されます。
 * 各パーティションは、KEY パーティション化に基づいてサブパーティションに分割されます。
 * パーティション 1 は 2 つのサブパーティションに分割され、パーティション 2 は 3 つのサブパーティションに分割され、パーティション 3 は 4 つのサブパーティションに分割されます。
 * したがって、物理パーティションの総数は 9 です。
*/
CREATE TABLE sp_tbl_list_key_ntp(
 id int, 
 country varchar(64),
 city varchar(64),
 order_time datetime not null,
 PRIMARY KEY(id)
)
PARTITION BY LIST COLUMNS(country,city) 
SUBPARTITION BY KEY(id)
(
  PARTITION p1 VALUES IN (('China','Hangzhou')) SUBPARTITIONS 2,
  PARTITION p2 VALUES IN (('Russian','Moscow')) SUBPARTITIONS 3,
  PARTITION pd VALUES IN (DEFAULT) SUBPARTITIONS 4
);