このトピックでは、パーティションとサブパーティションの命名規則について説明します。
特定のパーティションまたはサブパーティションにアクセスまたは変更するには、構文でパーティションまたはサブパーティションの名前を指定する必要があります。
このトピックでは、パーティションテーブルのパーティションとサブパーティションの名前を自動的に生成するためのルールについて説明します。
パーティションテーブルでは、次の場合にパーティションとサブパーティションの名前が自動的に生成されることがあります。
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 このテーブルのすべてのサブパーティションの名前は、次の方法で生成されます。
名前p1およびp2は、HASHパーティションに対して自動的に生成される。
名前sp1、sp2、sp3、およびsp4は、テンプレート化HASHサブパーティションに対して自動的に生成されます。
物理パーティションの名前であるサブパーティションの実際の名前は、次のルールに基づいて生成されます。パーティションの名前 + サブパーティションの名前。
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秒)