説明
このステートメントは、テーブルグループを作成するために使用されます。
テーブルグループは主に、分散特性が同じテーブルの集合を作成するために使用されます。分散特性が同じテーブル間で結合操作を行う場合、ローカルで処理できるため、ノード間のデータリクエストを回避できます。
使用上の制限と注意事項
OceanBaseデータベースのアップグレード中は、テーブルグループの作成を禁止します。
V4.4.2バージョンでは、V4.4.2 BP1バージョンから、テーブルグループ内のパーティションの分散方式は
SHARDINGとSCOPEによって共同で決定されます。現在のバージョンではSHARDING属性とSCOPE属性の一部の組み合わせのみをサポートしており、サポートされていない組み合わせを指定するとエラーが発生します。サポートされている組み合わせは以下の通りです:SHARDING = 'NONE'+SCOPE = 'SERVER'SHARDING = 'NONE'+SCOPE = 'ZONE'SHARDING = 'NONE'+SCOPE = 'CLUSTER'SHARDING = 'PARTITION'+SCOPE = 'CLUSTER'SHARDING = 'ADAPTIVE'+SCOPE = 'CLUSTER'
構文
CREATE TABLEGROUP tablegroup_name
[sharding_option,]
[scope_option];
sharding_option:
SHARDING = '{NONE | PARTITION | ADAPTIVE}'
scope_option:
SCOPE = '{SERVER | ZONE | CLUSTER}'
パラメータの説明
パラメータ |
説明 |
|---|---|
| tablegroup_name | テーブルグループ名。最大64文字。英字の大文字と小文字、数字、アンダースコアのみ使用可能。英字またはアンダースコアで始めなければならず、OceanBaseデータベースのキーワードは使用できません。 |
| sharding_option | オプションです。テーブルグループのSHARDING属性を指定するために使用します。デフォルト値はADAPTIVEです。SHARDINGは、テーブルグループ内の各テーブル間で対応するパーティションの集約方式を決定します。集約された一連のパーティションをPartition Group(パーティショングループ)と呼び、これは分散を解消する最小単位です。詳細については、後述のsharding_optionを参照してください。 |
| scope_option | オプションです。テーブルグループのSCOPE属性を指定するために使用します。SCOPEは、テーブルグループ内のすべての集約されたPartition Groupの分散範囲を決定します。詳細については、後述のscope_optionを参照してください。
説明V4.4.2バージョンでは、V4.4.2 BP1バージョンからテーブルグループの |
sharding_option
NONE:テーブルグループに追加するテーブルに制限はありません。PARTITION:テーブルグループに追加するテーブルの対応するパーティションは、テーブルグループ内のすべてのテーブルのパーティション方式(パーティションタイプ、パーティション数、パーティション値を含む)と一致している必要があります。ADAPTIVE:テーブルグループに追加するテーブルの対応するパーティションとサブパーティションは、テーブルグループ内のすべてのテーブルのパーティションとサブパーティションの方式(パーティションタイプ、パーティション数、パーティション値を含む)と一致している必要があります。テーブルグループに追加するテーブルは、同一の種類のパーティションテーブル(パーティションテーブルまたはサブパーティションテーブル)である必要があります。
同じパーティション方式には以下が含まれます:
- パーティションタイプが同じであること(例えば、どちらもHash + Rangeパーティション)。
- Hashパーティションの場合、参照する列数とパーティション数が同じであること。
- Rangeパーティションの場合、参照する列数が同じで、パーティション数とRange分割ポイントも同じである必要があります。
サブパーティションについても、そのパーティションタイプに応じて、上記の要件が適用されます。
scope_option
scope_option:オプションです。テーブルグループのSCOPE属性を指定するために使用します。SCOPEは、テーブルグループ内のすべての集約されたPartition Groupの分散範囲を決定します。取り得る値は以下のとおりです:説明
V4.4.2バージョンでは、V4.4.2 BP1バージョンからテーブルグループの
SCOPE属性がサポートされています。SERVER:すべてのPartition GroupのLeaderが同一ノードに集中していることを示します。ZONE:すべてのPartition GroupのLeaderが同一Zone内に分散して配置されていることを示します。CLUSTER:すべてのPartition GroupのLeaderがクラスタ内の各ノードに分散して配置されていることを示します。
テーブルグループで
SCOPEが指定されていない場合、SHARDING属性に基づいて対応するデフォルトのSCOPE属性が自動的に設定されます。具体的な対応関係は以下のとおりです:SHARDING = 'NONE'の場合、SCOPEの値はSERVERとなります。SHARDING = 'PARTITION'の場合、SCOPEの値はCLUSTERとなります。SHARDING = 'ADAPTIVE'の場合、SCOPEの値はCLUSTERとなります。
注意
低いバージョンからアップグレードしたテーブルグループでも、同じルールに従って
SCOPEが決定されます。
例
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