ビジネスニーズに応じて、テーブルグループを作成できます。
使用上の制限
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(*.*)権限を持っている必要があります。テーブルグループを作成するSQLステートメントは以下のとおりです:
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を指定すると、エラーは発生せず、警告情報が1件生成されるだけです。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つのバランスグループとなり、同一のパーティションインデックスに属するパーティションは同一のパーティショングループに集約されます。
- すべてがサブパーティションテーブルの場合:同一のパーティションインデックスが1つのバランスグループを形成し、そのバランスグループ内で同一のサブパーティションインデックスに属するサブパーティションが同一のパーティショングループに集約されます。
同一のパーティション定義とは具体的には以下を指します:
- パーティションタイプが同じであること。例えば、どちらもHash + Rangeパーティションであること。
- Hashパーティションの場合、参照する列数とパーティション数が同じであること。
- Rangeパーティションの場合、参照する列数、パーティション数、Range分割ポイントがすべて同じであること。
- サブパーティションの場合、そのパーティションタイプに応じて、パーティションと同じ要件が適用されます。
scope_option:オプションです。テーブルグループのSCOPE属性を指定するために使用します。SCOPEはテーブルグループ内のすべての集約されたパーティショングループの分散範囲を決定します。取り得る値は以下のとおりです:SERVER:すべてのパーティショングループのリーダーが同一ノードに集中することを示します。ZONE:すべてのパーティショングループのリーダーが同一ゾーン内に分散して配置されることを示します。CLUSTER:すべてのパーティショングループのリーダーがクラスタ内の各ノードに分散して配置されることを示します。
テーブルグループで
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以前のバージョンの |
テーブルグループ内の全てのパーティションが、特定のゾーン内に均等に分散されます。 | テーブルグループ内の全てのパーティションが、各ノードに均等に分散されます。 |
| PARTITION | 不可 | 現在はサポートされていません | パーティション単位で集約され、各パーティショングループはランダムに分散されます。
説明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';実行結果は次のとおりです:
ERROR 4179 (HY000): create tablegroup with sharding is ADAPTIVE and scope is ZONE not allowed
次のステップ
テーブルグループを作成した後、条件に合致する既存のテーブルをテーブルグループに追加できます。具体的な操作については、テーブルのテーブルグループへの追加を参照してください。