説明
このステートメントは、テーブルグループに複数のテーブルを追加し、テーブルグループのプロパティを変更するために使用されます。
構文
テーブルグループに複数のテーブルを追加します。
ALTER TABLEGROUP tablegroup_name ADD [TABLE] table_name [, table_name...];テーブルグループのパーティションルールを変更します。
ALTER TABLEGROUP tablegroup_name tablegroup_option; tablegroup_option: SHARDING = 'NONE' | 'PARTITION' | 'ADAPTIVE'
パラメータの説明
| パラメータ | 説明 |
|---|---|
| tablegroup_name | テーブルグループ名。1つのテーブルグループに複数のテーブルを追加する場合、テーブル間はカンマ(,)で区切ります。複数のテーブルを追加する際、テーブル名の重複は許可されます。追加対象のテーブルが既に該当するテーブルグループに属している場合でも、OceanBaseデータベースはエラーを報告しません。 |
| SHARDING | テーブルグループのプロパティ。SHARDING プロパティを指定しない場合、デフォルトでは ADAPTIVE のテーブルグループが作成されます。SHARDING の値は以下のとおりです:
|
例
tblgroup1という名前のテーブルグループを作成し、そのSHARDINGプロパティをNONEに設定します。また、パーティションテーブルtbl1とtbl2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 INT,col2 VARCHAR(50)) PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2) (PARTITION p0 VALUES in (01) (SUBPARTITION mp0 VALUES in ('01'), SUBPARTITION mp1 VALUES in ('02')), PARTITION p1 VALUES in (02) (SUBPARTITION mp3 VALUES in ('01'), SUBPARTITION mp4 VALUES in ('02')) ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 INT,col2 VARCHAR(50)) PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2) (PARTITION p0 VALUES in (01) (SUBPARTITION mp0 VALUES in ('01'), SUBPARTITION mp1 VALUES in ('02')), PARTITION p1 VALUES in (02) (SUBPARTITION mp3 VALUES in ('01'), SUBPARTITION mp4 VALUES in ('02')) ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup1 ADD tbl1,tbl2; Query OK, 0 rows affectedtbl1とtbl2のパーティショニング方式が一致しているため、SHARDINGプロパティをPARTITIONまたはADAPTIVEに変更できます。obclient> ALTER TABLEGROUP tblgroup1 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup1 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affectedtblgroup2という名前のテーブルグループを作成し、そのSHARDINGプロパティをNONEに設定します。また、非パーティションテーブルtbl1とパーティションテーブルtbl2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col INT); Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) PARTITION BY LIST(col1) (PARTITION p0 VALUES IN (1, 2, 3), PARTITION p1 VALUES IN (5, 6), PARTITION p2 VALUES IN (DEFAULT) ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup2 ADD tbl1,tbl2; Query OK, 0 rows affectedテーブルグループ
tblgroup2に非パーティションテーブルとパーティションテーブルが含まれているため、SHARDINGプロパティをPARTITIONまたはADAPTIVEに変更することはできません。obclient> ALTER TABLEGROUP tblgroup2 SHARDING = 'PARTITION'; ERROR 4179 (HY000): not all tables are non-partitioned or partitioned, modify tablegroup sharding attribute not allowed obclient> ALTER TABLEGROUP tblgroup2 SHARDING = 'ADAPTIVE'; ERROR 4179 (HY000): not all tables are non-partitioned or partitioned, modify tablegroup sharding attribute not allowedtblgroup3という名前のテーブルグループを作成し、そのSHARDINGプロパティをNONEに設定します。また、パーティションテーブルtbl1とtbl2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup3 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 INT,col2 VARCHAR(50)) PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2) (PARTITION p0 VALUES in (01) (SUBPARTITION mp0 VALUES in ('01'), SUBPARTITION mp1 VALUES in ('02'), SUBPARTITION mp2 VALUES in ('03') ), PARTITION p1 VALUES in (02) (SUBPARTITION mp3 VALUES in ('01'), SUBPARTITION mp4 VALUES in ('02'), SUBPARTITION mp5 VALUES in ('03')) ); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 INT,col2 VARCHAR(50)) PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2) (PARTITION p0 VALUES in (01) (SUBPARTITION mp0 VALUES in ('01'), SUBPARTITION mp1 VALUES in ('02')), PARTITION p1 VALUES in (02) (SUBPARTITION mp3 VALUES in ('01'), SUBPARTITION mp4 VALUES in ('02')) ); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup3 ADD tbl1,tbl2; Query OK, 0 rows affectedテーブルグループ
tblgroup3内のtbl1とtbl2は、パーティションタイプが同じであり、サブパーティションのタイプが異なります(サブパーティションの数も異なります)。そのため、SHARDINGプロパティをPARTITIONに変更できますが、ADAPTIVEに変更することはできません。obclient> ALTER TABLEGROUP tblgroup3 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup3 SHARDING = 'ADAPTIVE'; ERROR 4179 (HY000): subpartition num not matched, modify tablegroup sharding attribute not allowedtblgroup4という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。この後、テーブルグループ内のテーブルtbl1とtbl2のパーティション数を変更すると、テーブルグループ内のすべてのテーブルのパーティショニング方式が一致しなくなります。そのため、新しいテーブルtbl3をこのテーブルグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup4 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(2020), SUBPARTITION mp1 VALUES LESS THAN(2021), SUBPARTITION mp2 VALUES LESS THAN(2022)) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200)); Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(2020), SUBPARTITION mp1 VALUES LESS THAN(2021), SUBPARTITION mp2 VALUES LESS THAN(2022)) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200)); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup4 ADD tbl1,tbl2; Query OK, 0 rows affected obclient> ALTER TABLE tbl1 ADD PARTITION (PARTITION p3 VALUES LESS THAN(400), PARTITION p4 VALUES LESS THAN(500)); Query OK, 0 rows affected obclient> ALTER TABLE tbl2 DROP SUBPARTITION p0smp0,p0smp1; Query OK, 0 rows affected obclient> CREATE TABLE tbl3(col1 INT,col2 INT) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(2020), SUBPARTITION mp1 VALUES LESS THAN(2021), SUBPARTITION mp2 VALUES LESS THAN(2022)) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200)); Query OK, 0 rows affected obclient> ALTER TABLEGROUP tblgroup4 ADD tbl3; ERROR 4179 (HY000): partition num not equal, add table to tablegroup not allowed