ビジネスニーズに応じて、テーブルグループを作成できます。
使用上の制限
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'
構文
テーブルグループを作成するSQLステートメントは以下のとおりです:
CREATE TABLEGROUP tablegroup_name
[sharding_option,]
[scope_option];
sharding_option:
SHARDING = '{NONE | PARTITION | ADAPTIVE}'
scope_option:
SCOPE = '{SERVER | ZONE | CLUSTER}'
パラメータ説明:
tablegroup_name:作成するテーブルグループ名。sharding_option:テーブルグループのSHARDING属性を指定するために使用されます。SHARDINGはテーブルグループ内の各テーブル間の対応するパーティションの集約方法を決定し、集約された一連のパーティションをPartition Group(パーティショングループ)と呼び、これが分散の最小単位です。取り得る値は以下の通りです:NONE:テーブルグループに追加される各テーブルのパーティション方式に制限がなく、テーブル間でパーティションを集約しないことを意味します。V4.4.2 BP1以前のバージョンでは、NONEの意味にはすべてのパーティションが同一のログストリーム上にあり、分散されないことも含まれていました。新バージョンではこの意味は削除され、具体的に分散されるかどうかはSCOPE属性に依存します。- パーティションテーブルの場合:各パーティションが独立したPartition Groupとなります。
- サブパーティションテーブルの場合:各サブパーティションが独立したPartition Groupとなります。
- 非パーティションテーブルの場合:テーブル全体が1つのPartition Groupとなります。
- グローバルインデックス:
SHARDING = NONEのテーブルグループ内のテーブルのグローバルインデックステーブルは、自動的に同一のテーブルグループにバインドされます。グローバルな非パーティションインデックステーブルは全体として1つのPartition Groupとなり、グローバルなパーティションインデックステーブルは各パーティションが独立したPartition Groupとなります。
PARTITION:テーブルグループ全体が1つのBalance Group(均衡グループ)となり、同一のパーティションインデックスのパーティションが同一のPartition Groupに集約されます。テーブルグループに追加されるすべてのテーブルの対応するパーティションは、テーブルグループ内のすべてのテーブルのパーティションの定義と一致している必要があります。これには、パーティションタイプ、パーティション数、パーティション値が含まれます。同一のパーティション定義とは具体的には以下を指します:- パーティションタイプが同じであること。例えば、どちらもRangeパーティションであること。
- Hashパーティションの場合、参照する列数とパーティション数が同じであること。
- Rangeパーティションの場合、参照する列数、パーティション数、Range分割点が同じであること。
ADAPTIVE:デフォルト値です。テーブルグループに追加されるすべてのテーブルの対応するパーティションとサブパーティションは、テーブルグループ内のすべてのテーブルのパーティションとサブパーティションの定義と一致している必要があります。これには、パーティションタイプ、パーティション数、パーティション値が含まれます。- 全てがパーティションテーブルの場合:テーブルグループ全体が1つのBalance Groupとなり、同一のパーティションインデックスのパーティションが同一のPartition Groupに集約されます。
- すべてがサブパーティションテーブルの場合:同一のパーティションインデックスに属するものは1つのBalance Groupとなり、そのBalance Group内で同一のサブパーティションインデックスを持つサブパーティションは同一のPartition Groupに集約されます。
同一のパーティション定義とは具体的には以下を指します:
- パーティションタイプが同じであること。例えば、どちらもHash + Rangeパーティションであること。
- Hashパーティションの場合、参照する列数とパーティション数が同じであること。
- Rangeパーティションの場合、参照する列数、パーティション数、Rangeの分割ポイントがすべて同じであること。
- サブパーティションについては、そのパーティションタイプに応じて、パーティションと同じ要件が適用されます。
scope_option:オプションです。テーブルグループのSCOPE属性を指定するために使用します。SCOPEは、テーブルグループ内のすべての集約されたPartition Groupの分散範囲を決定します。取り得る値は以下のとおりです: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となります。
注意
- V4.4.2バージョンでは、V4.4.2 BP1バージョンからテーブルグループの
SCOPE属性がサポートされています。 - 低バージョンからアップグレードしたテーブルグループも、同じルールに従って
SCOPEが決定されます。
パーティションの分散方式
テーブルグループ内のパーティションの分散方式は、SHARDINGとSCOPEによって共同で決定されます。SHARDINGとSCOPE属性のさまざまな組み合わせにおける分散方式は以下のとおりです:
SHARDING \ SCOPE |
SERVER |
ZONE |
CLUSTER |
|---|---|---|---|
| NONE | すべてのパーティションが1つのノードに集約されます。
説明V4.4.2 BP1以前のバージョンの |
テーブルグループ内のすべてのパーティションが、特定のZone内に均等に分散されます。 | テーブルグループ内のすべてのパーティションが、各ノードに均等に分散されます。 |
| PARTITION | 不可 | 現在はサポートされていません | パーティション単位で集約され、各Partition Groupはランダムに分散されます。
説明V4.4.2 BP1以前のバージョンの |
| ADAPTIVE | 不可 | 現在はサポートされていません |
説明V4.4.2 BP1以前のバージョンの |
例
SHARDING = 'NONE'+SCOPE = 'ZONE'のテーブルグループtblgroup1を作成します。obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE', SCOPE = 'ZONE';SHARDING = 'NONE'のテーブルグループtblgroup2を作成します。obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'NONE';SCOPE = 'CLUSTER'のテーブルグループtblgroup3を作成します。obclient> CREATE TABLEGROUP tblgroup3 SCOPE = 'CLUSTER';SCOPE = 'ZONE'のみを指定してテーブルグループを作成すると、エラーが発生します。SHARDINGのデフォルト値はADAPTIVEであり、SHARDING = 'ADAPTIVE'+SCOPE = 'ZONE'の組み合わせはサポートされていないためです。obclient> CREATE TABLEGROUP tblgroup4 SCOPE = 'ZONE';実行結果は次のとおりです:
OBE-00600: internal error code, arguments: -4179, create tablegroup with sharding is ADAPTIVE and scope is ZONE not allowed
次のステップ
テーブルグループを作成した後、条件に合致する既存のテーブルをテーブルグループに追加できます。具体的な操作については、テーブルのテーブルグループへの追加を参照してください。