説明
このステートメントは、テーブルグループを作成するために使用します。
テーブルグループは主に、分散特性が同じテーブルのセットを作成するために使用されます。分散特性が同じテーブル間で結合操作を実行する場合、ローカルで処理できるため、ノード間のデータリクエストを回避できます。
テーブルグループを作成するには、現在のユーザーがグローバルな CREATE (*.*) 権限を持っている必要があります。
使用上の制限と注意事項
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 [IF NOT EXISTS] tablegroup_name
[sharding_option,]
[scope_option];
sharding_option:
SHARDING = '{NONE | PARTITION | ADAPTIVE}'
scope_option:
SCOPE = '{SERVER | ZONE | CLUSTER}'
パラメータの説明
パラメータ |
説明 |
|---|---|
| IF NOT EXISTS | もし試みるテーブルグループ名が既に存在し、IF NOT EXISTS オプションを使用しなかった場合、エラーメッセージがトリガーされます。IF NOT EXISTS を指定した場合、エラーは発生せず、警告情報が生成されるだけです。 |
| 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内に分散しており、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; 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