説明
このステートメントは、テーブルグループを作成するために使用されます。
テーブルグループは主に、同じ分布特性を持つ一連のテーブルを作成するために使用されます。同じ分布特性を持つテーブルは結合操作を行う際にローカルで実行できるため、ノード間のデータリクエストを回避できます。
テーブルグループを作成するには、現在のユーザーがグローバルな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