説明
このステートメントは、テーブルグループを作成するために使用されます。
テーブルグループは主に、同じ分布特性を持つ一連のテーブルを作成するために使用されます。同じ分布特性を持つテーブルは結合操作を行う際にローカルで実行できるため、ノード間のデータリクエストを回避できます。
構文
CREATE TABLEGROUP tablegroup_name [ tablegroup_options ]
tablegroup_option:
SHARDING = 'NONE' | 'PARTITION' | 'ADAPTIVE'
パラメータの説明
| パラメータ | 説明 |
|---|---|
| tablegroup_name | テーブルグループ名。最大64文字まで。英字の大文字・小文字、数字、アンダースコアのみを含み、英字またはアンダースコアで始まる必要があります。また、OceanBaseデータベースのキーワードとして使用することはできません。作成しようとするテーブルグループ名が既に存在し、IF NOT EXISTS が指定されていない場合、エラーが発生します。 |
| SHARDING | テーブルグループのプロパティです。SHARDING プロパティを指定しない場合、デフォルトで ADAPTIVE のテーブルグループが作成されます。SHARDING の値は以下のとおりです:
|
例
myTableGroup1という名前のテーブルグループを作成し、パーティションテーブルではないmyt1とmyt2をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP myTableGroup1; obclient> CREATE TABLE MYT1 (c1 NUMBER, c2 NUMBER) TABLEGROUP = myTableGroup1; obclient> CREATE TABLE MYT2 (c1 NUMBER, c2 NUMBER) TABLEGROUP = myTableGroup1;tblgroup1という名前のテーブルグループを作成し、そのSHARDINGプロパティをNONEに設定します。また、パーティションテーブルではないtbl1、パーティションテーブルtbl2、サブパーティションテーブルtbl3をこのテーブルグループに追加します。obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE'; obclient> CREATE TABLE tbl1 (col NUMBER) TABLEGROUP = tblgroup1; obclient> CREATE TABLE tbl2 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); obclient> CREATE TABLE tbl3(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup1 PARTITION BY LIST(col1) SUBPARTITION BY LIST (col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02'), SUBPARTITION mp2 VALUES ('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') );tblgroup2という名前のテーブルグループを作成し、そのSHARDINGプロパティをPARTITIONに設定します。そして、パーティションテーブルtbl4とパーティションテーブルtbl5をこのテーブルグループに追加します。ただし、両者のパーティショニング方式は同一でなければなりません。obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'PARTITION'; obclient> CREATE TABLE tbl4 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup2 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); obclient> CREATE TABLE tbl5 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup2 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') );tblgroup3という名前のテーブルグループを作成し、そのSHARDINGプロパティをPARTITIONに設定します。パーティションテーブルではないtbl6とパーティションテーブルtbl7を同時にこのテーブルグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup3 SHARDING = 'PARTITION'; obclient> CREATE TABLE tbl6 (col INT) TABLEGROUP = tblgroup3; obclient> CREATE TABLE tbl7 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup3 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') );期待される実行結果:
OBE-00600: internal error code, arguments: -4179, not all tables are non-partitioned or partitioned, add table to tablegroup not allowedtblgroup4という名前のテーブルグループを作成し、そのSHARDINGプロパティをPARTITIONに設定します。パーティションテーブルtbl8とパーティションテーブルtbl9のパーティション値が異なるため、同時にこのテーブルグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup4 SHARDING = 'PARTITION'; obclient> CREATE TABLE tbl8 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup4 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02') ); obclient> CREATE TABLE tbl9 (col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup4 PARTITION BY LIST(col1) (PARTITION p0 VALUES ('01'), PARTITION p1 VALUES ('02'), PARTITION p2 VALUES ('03') );期待される実行結果:
OBE-00600: internal error code, arguments: -4179, partition num not equal, add table to tablegroup not allowedtblgroup5という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。そして、パーティションテーブルtbl10とパーティションテーブルtbl11をこのテーブルグループに追加します。ただし、両者のパーティショニング方式は同一でなければなりません。obclient> CREATE TABLEGROUP tblgroup5 SHARDING = 'ADAPTIVE'; obclient> CREATE TABLE tbl10(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup5 PARTITION BY LIST(col1) SUBPARTITION BY LIST (col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02'), SUBPARTITION mp2 VALUES ('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); obclient> CREATE TABLE tbl11(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup5 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES('01'), SUBPARTITION mp1 VALUES('02'), SUBPARTITION mp2 VALUES('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') );tblgroup6という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。パーティションテーブルではないtbl12とパーティションテーブルtbl13を同時にこのテーブルグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup6 SHARDING = 'ADAPTIVE'; obclient> CREATE TABLE tbl12 (col INT) TABLEGROUP = tblgroup6; obclient> CREATE TABLE tbl13(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup6 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES('01'), SUBPARTITION mp1 VALUES('02'), SUBPARTITION mp2 VALUES('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); 期待される実行結果: ``sql OBE-00600: internal error code, arguments: -4179, not all tables are non-partitioned or partitioned, add table to tablegroup not allowedtblgroup7という名前のテーブルグループを作成し、そのSHARDINGプロパティをADAPTIVEに設定します。パーティションテーブルtbl14とパーティションテーブルtbl15のパーティションタイプは同一ですが、サブパーティションのパーティションタイプが異なる(サブパーティション数が異なる)ため、同時にこのテーブルグループに追加することはできません。obclient> CREATE TABLEGROUP tblgroup7 SHARDING = 'ADAPTIVE'; obclient> CREATE TABLE tbl14(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup7 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES ('01'), SUBPARTITION mp1 VALUES ('02'), SUBPARTITION mp2 VALUES ('03') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') ); obclient> CREATE TABLE tbl15(col1 NUMBER,col2 VARCHAR2(50)) TABLEGROUP = tblgroup7 PARTITION BY LIST(col1) SUBPARTITION BY LIST(col2) SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES('01'), SUBPARTITION mp1 VALUES('02') ) (PARTITION p0 VALUES('01'), PARTITION p1 VALUES('02') );期待される実行結果:
OBE-00600: internal error code, arguments: -4179, subpartition num not matched, add table to tablegroup not allowed