PLシステムパッケージDBMS_BALANCEを使用して、Sharding = 'NONE'のテーブルグループに重みを設定し、異なるテーブルグループが重みに応じて分散されるようにすることで、テーブルグループに自動的に集約されるデータベースを重みに応じて分散させることができます。
使用上の制限と注意事項
現在、テーブルグループの重み設定はMySQLモードでのみサポートされています。
V4.4.2バージョンでは:
V4.4.2 BP1(含まず)以前のバージョンでは、Shardingプロパティが
NONEのテーブルグループにのみ重み設定が可能です。V4.4.2 BP1以降のバージョンでは、
SHARDING = 'NONE'+SCOPE = 'SERVER'およびSHARDING = 'NONE'+SCOPE = 'ZONE'のテーブルグループにのみ重み設定が可能です。SHARDING = 'NONE'+SCOPE = 'CLUSTER'のテーブルグループへの重み設定はサポートされていません。
テーブルグループの重みを設定する際は、できるだけ少ない段階に分けることを推奨します。最大で3段階に分けることを推奨します。
大重み = 100% *
Sharding = 'NONE'のテーブルグループの総数中重み = 50% *
Sharding = 'NONE'のテーブルグループの総数小重み = 1
パラメータ
enable_database_sharding_none=Trueを変更した後、新規に作成されるデータベースで作成されるデフォルトのテーブルグループの重みは1になります。その他、これまでテーブルグループの重みが設定されていないSharding = 'NONE'のテーブルグループのデフォルトの重みは0であり、重みの均等化には参加しません。重みを持つテーブルグループにおいて、そのグループ内のすべてのテーブルのテーブルレベルおよびパーティションレベルの重みは無効になります。テーブルレベルおよびパーティションレベルの重みに関する操作および説明については、パーティションの重みを設定するを参照してください。
重みの設定
ユーザーがクラスタのMySQLテナントにログインします。
接続例は以下のとおりです。データベースへの接続時は、実際の環境に合わせてください。
obclient -h10.xx.xx.xx -P2883 -uroot@mysql001#obdemo -p***** -A(オプション)
Sharding = 'NONE'のテーブルグループを作成します。例えば、テーブルグループ
TG_DB_testを作成します。obclient(root@mysql001)[test]> CREATE TABLEGROUP TG_DB_test Sharding = 'NONE';説明
V4.4.2バージョンでは、V4.4.2 BP1以降のバージョンにおいて、
Sharding = 'NONE'のテーブルグループを作成する際、SCOPEプロパティを指定しない場合、デフォルトでSHARDING = 'NONE'+SCOPE = 'SERVER'のテーブルグループが作成されます。業務要件に応じて、テーブルグループの重みを設定します。
テーブルグループの重みは整数のみサポートしており、値の範囲は[1, +∞)です。テーブルグループの重みを10に設定するステートメントは以下のとおりです:
obclient(root@mysql001)[test]> CALL DBMS_BALANCE.SET_TABLEGROUP_BALANCE_WEIGHT(10,'TG_DB_test');sysテナントがユーザーテナントのテーブルグループに重みを設定することもサポートされています。ステートメントは以下のとおりです:obclient(root@sys)[(none)]> CALL DBMS_BALANCE.SET_TABLEGROUP_BALANCE_WEIGHT(10,'TG_DB_test') TENANT = 'mysql001';完了後、テーブルグループの重み情報を確認します。
obclient(root@mysql001)[test]> SELECT TABLEGROUP_NAME, WEIGHT, TABLEGROUP_ID, OBJECT_ID FROM oceanbase.DBA_OB_OBJECT_BALANCE_WEIGHT WHERE TABLEGROUP_NAME = 'TG_DB_test';クエリ結果は次のとおりです:
+-----------------+--------+---------------+-----------+ | TABLEGROUP_NAME | WEIGHT | TABLEGROUP_ID | OBJECT_ID | +-----------------+--------+---------------+-----------+ | TG_DB_test | 10 | 500007 | 500007 | +-----------------+--------+---------------+-----------+ 1 row in set
次のステップ
テーブルグループの重みを設定しても、システムは即座に重みの均等化を実行しません。ユーザーが早期に重みの均等化を希望する場合は、DBMS_BALANCE.TRIGGER_PARTITION_BALANCEサブプログラムを呼び出して、手動でパーティションの均等化をトリガーできます。手動でパーティションの均等化をトリガーする詳細な操作については、パーティションの均等化を手動でトリガーするを参照してください。
また、ユーザーは定期的なパーティションの均等化タスクのトリガーを待つこともできます。定期的なパーティションの均等化タスクの詳細については、定期的なパーティションの均等化タスクを設定するを参照してください。
関連ドキュメント
テーブルグループの重みの適用例については、テーブルグループの重み均等化の適用例を参照してください。