説明
このステートメントは、テーブルグループを作成するために使用されます。
テーブルグループは主に、同じ分散特性を持つテーブルのセットを作成するために使用されます。同じ分散特性を持つテーブルは結合操作を実行する際にローカルで処理できるため、ノード間のデータリクエストを回避できます。
テーブルグループを作成するには、現在のユーザーがグローバルな CREATE (*.*) 権限を持っている必要があります。
構文
CREATE TABLEGROUP tablegroup_name [tablegroup_option];
tablegroup_option:
SHARDING = 'NONE' | 'PARTITION' | 'ADAPTIVE'
パラメータの説明
パラメータ |
説明 |
|---|---|
| tablegroup_name | テーブルグループ名。最大64文字。英字の大文字・小文字、数字、アンダースコアのみ使用可能。英字またはアンダースコアで始めなければならず、OceanBaseデータベースのキーワードとして使用することはできません。作成しようとするテーブルグループ名が既に存在し、IF NOT EXISTS を指定しない場合、エラーが発生します。 |
| SHARDING | テーブルグループの属性です。SHARDING 属性を指定しない場合、デフォルトで ADAPTIVE のテーブルグループが作成されます。SHARDING の取り得る値は以下のとおりです:
|
例
myTableGroup1という名前のテーブルグループを作成し、非パーティションテーブルmyt1とmyt2をこのグループに追加します。obclient> CREATE TABLEGROUP myTableGroup1; Query OK, 0 rows affected obclient> CREATE TABLE myt1 (c1 INT, c2 INT ) TABLEGROUP = myTableGroup1; Query OK, 0 rows affected obclient> CREATE TABLE myt2 (c1 INT, c2 INT ) TABLEGROUP = myTableGroup1; Query OK, 0 rows affectedtblgroup1という名前のテーブルグループを作成し、そのSHARDINGプロパティをNONEに設定します。非パーティションテーブルtbl1、パーティションテーブルtbl2、サブパーティションテーブルtbl3をこのグループに追加します。obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col INT) TABLEGROUP = tblgroup1; Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) TABLEGROUP = tblgroup1 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> CREATE TABLE tbl3(col1 INT,col2 varchar(50)) TABLEGROUP = tblgroup1 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 affectedtblgroup2という名前のテーブルグループを作成し、そのSHARDINGプロパティをPARTITIONに設定します。パーティションテーブルtbl1とパーティションテーブルtbl2をこのグループに追加します。両者のパーティショニング方法は同じです。obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) TABLEGROUP = tblgroup2 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> CREATE TABLE tbl2 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) TABLEGROUP = tblgroup2 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 affectedtblgroup3という名前のテーブルグループを作成し、そのSHARDINGプロパティをPARTITIONに設定します。非パーティションテーブルtbl1とパーティションテーブルtbl2を同時にこのグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup3 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col INT) TABLEGROUP = tblgroup3; Query OK, 0 rows affected obclient> CREATE TABLE tbl2 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) TABLEGROUP = tblgroup3 PARTITION BY LIST(col1) (PARTITION p0 VALUES IN (1, 2, 3), PARTITION p1 VALUES IN (5, 6), PARTITION p2 VALUES IN (DEFAULT) ); ERROR 4179 (HY000): not all tables are non-partitioned or partitioned, add table to tablegroup not allowedtblgroup4という名前のテーブルグループを作成し、そのSHARDINGプロパティをPARTITIONに設定します。パーティションテーブルtbl1とパーティションテーブルtbl2のパーティション値が異なるため、同時にこのグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup4 SHARDING = 'PARTITION'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) TABLEGROUP = tblgroup4 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> CREATE TABLE tbl2 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50)) TABLEGROUP = tblgroup4 PARTITION BY LIST(col1) (PARTITION p0 VALUES IN (1, 2, 3), PARTITION p1 VALUES IN (5, 7), PARTITION p2 VALUES IN (DEFAULT) ); ERROR 4179 (HY000): list_part partition value not equal, add table to tablegroup not allowedtblgroup5という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。パーティションテーブルtbl1とパーティションテーブルtbl2をこのグループに追加します。両者のパーティショニング方法は同じです。obclient> CREATE TABLEGROUP tblgroup5 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 INT,col2 VARCHAR(50)) TABLEGROUP = tblgroup5 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)) TABLEGROUP = tblgroup5 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 affectedtblgroup6という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。非パーティションテーブルtbl1とパーティションテーブルtbl2を同時にこのグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup6 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1 (col int) TABLEGROUP = tblgroup6; Query OK, 0 rows affected obclient> CREATE TABLE tbl2(col1 INT,col2 VARCHAR(50)) TABLEGROUP = tblgroup6 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')) ); ERROR 4179 (HY000): not all tables are non-partitioned or partitioned, add table to tablegroup not allowedtblgroup7という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。パーティションテーブルtbl1とパーティションテーブルtbl2のパーティションタイプは同じですが、サブパーティションのタイプが異なる(サブパーティションの数が異なる)ため、同時にこのグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup7 SHARDING = 'ADAPTIVE'; Query OK, 0 rows affected obclient> CREATE TABLE tbl1(col1 INT,col2 VARCHAR(50)) TABLEGROUP = tblgroup7 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)) TABLEGROUP = tblgroup7 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')) ); ERROR 4179 (HY000): subpartition num not matched, add table to tablegroup not allowed