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

PolarDB:パーティションとサブパーティションの命名規則

最終更新日:Jun 11, 2024

このトピックでは、パーティションとサブパーティションの命名規則について説明します。

特定のパーティションまたはサブパーティションにアクセスまたは変更するには、構文でパーティションまたはサブパーティションの名前を指定する必要があります。

このトピックでは、パーティションテーブルのパーティションとサブパーティションの名前を自動的に生成するためのルールについて説明します。

パーティションテーブルでは、次の場合にパーティションとサブパーティションの名前が自動的に生成されることがあります。

  • HASHまたはKEY分割ポリシーは、手動または自動で分割されたテーブルまたはグローバルインデックステーブルに使用されます。

  • サブパーティションは、パーティションテーブルのテンプレートサブパーティショニングに基づいて作成されます。

  • パーティションは、HASHパーティション分割テーブル内でさらに分割される。

パーティションの命名ルール

HASHまたはKEYパーティショニングポリシーを使用してテーブルを手動または自動でパーティション分割し、パーティション数を指定すると、パーティション名が自動的に生成されます。

HASHまたはKEYパーティショニングポリシーを使用してテーブルをパーティション分割する場合、パーティションは次のルールに基づいて名前が付けられます。 シリアル番号は1から始まります。

CREATE TABLE test_tbl_part_name (
 id bigint not null auto_increment, 
 bid int, 
 名前varchar(30) 、
 birthday datetime not null,
 主キー (id)
)
キーによるパーティション (id)
パーティー4 

たとえば、上記のステートメントを実行してパーティション分割テーブルを作成すると、パーティションの名前は次のようになります。最初のパーティションの名前はp1、2番目のパーティションの名前はp2です。 次のサンプルコードに例を示します。

CREATE TABLE test_tbl_part_name (
    -> id bigint not null auto_increment, 
    -> 主キー (id)
    -> ) 
    -> キーによるパーティー (id) 
    -> パーティー4;
クエリOK、影響を受ける0行 (1.13秒)

information_schema.partitionsからtable_name、partition_nameを選択します。table_name='test_tbl_part_name ';
+ -------------------- + ---------------- +
| table_name | partition_name |
+ -------------------- + ---------------- +
| test_tbl_part_name | p1 |
| test_tbl_part_name | p2 |
| test_tbl_part_name | p3 |
| test_tbl_part_name | p4 |
+ -------------------- + ---------------- +
セットの4列 (0.59秒) 

さらに、ALTERステートメントを実行してパーティションテーブルの特定のパーティションを分割する場合、新しいパーティションの名前は次のルールに基づいて指定されます。p + (パーティションの既存の最大シリアル番号 + 1) 。 例:

alter table test_tbl_part_name分割パーティションp1;
クエリOK、影響を受ける0行 (5.83秒)

information_schema.partitionsからtable_name、partition_nameを選択します。table_name='test_tbl_part_name ';
+ -------------------- + ---------------- +
| table_name | partition_name |
+ -------------------- + ---------------- +
| test_tbl_part_name | p5 |
| test_tbl_part_name | p6 |
| test_tbl_part_name | p2 |
| test_tbl_part_name | p3 |
| test_tbl_part_name | p4 |
+ -------------------- + ---------------- +
セットの5行 (0.18秒) 

サブパーティションの命名規則

サブパーティションには、テンプレート付きサブパーティションと非テンプレート付きサブパーティションが含まれます。 したがって、サブパーティションの命名規則は、パーティションの命名規則よりもわずかに複雑です。

テンプレート化HASHサブパーティションは、以下の規則に基づいて命名される: sp + サブパーティションのシリアル番号。 シリアル番号は1から始まります。

各パーティションのテンプレート化されていないHASHサブパーティションは、以下の規則: sp + サブパーティションのシリアル番号に基づいて別々に命名される。 シリアル番号は1から始まります。

すべてのサブパーティションの実際の名前は、次の規則に基づいて生成されます。パーティションの名前 + テンプレート付きサブパーティションまたはテンプレートなしサブパーティションの名前。

次のサンプルコードは、テンプレート付きサブパーティションを含むテーブルを作成する方法の例を示しています。

CREATE TABLE test_tbl_part_name2 (
 id bigint not null auto_increment, 
 bid int, 
 名前varchar(30) 、
 birthday datetime not null,
 主キー (id)
)
キーによるパーティー (入札)
パーティー2
SUBPARTITION BY KEY(id)
分割4 

このテーブルのすべてのサブパーティションの名前は、次の方法で生成されます。

  1. 名前p1およびp2は、HASHパーティションに対して自動的に生成される。

  2. 名前sp1、sp2、sp3、およびsp4は、テンプレート化HASHサブパーティションに対して自動的に生成されます。

  3. 物理パーティションの名前であるサブパーティションの実際の名前は、次のルールに基づいて生成されます。パーティションの名前 + サブパーティションの名前。

    • p1sp1、p1sp2、p1sp3、p1sp4

    • p2sp1, p2sp2, p2sp3, p2sp4

次のサンプルコードは、パーティションテーブルのデータを照会する方法の例を示しています。

mysql> CREATE TABLE test_tbl_part_name2 (
    -> id bigint not null auto_increment, 
    -> 入札int、 
    -> 名前varchar(30) 、
    -> birthday datetime not null,
    -> 主キー (id)
    -> ) 
    -> キーによるパーティー (入札) 
    -> パーティー2
    -> SUBPARTITION BY KEY(id) 
    -> SUBPARTITIONS 4;
クエリOK、影響を受ける0行 (1.40秒)

mysql> information_schema.partitionsからtable_name、partition_name、subpartition_nameを選択します。table_schema='autodb2 '、table_name='test_tbl_part_name2' です。+ --------------------- + ---------------- + ------------------- +
| table_name | partition_name | subpartition_name |
+ --------------------- + ---------------- + ------------------- +
| test_tbl_part_name2 | p1 | p1sp1 |
| test_tbl_part_name2 | p1 | p1sp2 |
| test_tbl_part_name2 | p1 | p1sp3 |
| test_tbl_part_name2 | p1 | p1sp4 |
| test_tbl_part_name2 | p2 | p2sp1 |
| test_tbl_part_name2 | p2 | p2sp2 |
| test_tbl_part_name2 | p2 | p2sp3 |
| test_tbl_part_name2 | p2 | p2sp4 |
+ --------------------- + ---------------- + ------------------- +
セットの8行 (0.12秒)