PLシステムパッケージ DBMS_BALANCE を使用して、Sharding = 'NONE' のテーブルグループに重みを設定できます。これにより、異なるテーブルグループが重みに応じて分散され、結果としてデータベースが重みに応じて自動的に集約されます。
使用上の制限と注意事項
現在、シャーディング属性が
NONEのテーブルグループに対してのみ、重みを設定できます。テーブルグループの重みを設定する際は、できるだけ少ない段階に分けることを推奨します。最大で3段階に分けることを推奨します。
大重み = 100% ×
Sharding = 'NONE'のテーブルグループの総数中重み = 50% ×
Sharding = 'NONE'のテーブルグループの総数小重み = 1
パラメータ
enable_database_sharding_none=Trueを変更した後、新しく作成されるデータベースのデフォルトテーブルグループの重みは1になります。他のSharding = 'NONE'のテーブルグループで、これまでに重みが設定されていない場合、デフォルトの重みは0であり、重みの均等化には参加しません。重みを持つテーブルグループにおいて、そのグループ内のすべてのテーブルのテーブルレベルおよびパーティションレベルの重みは無効になります。テーブルレベルおよびパーティションレベルの重みに関する操作および説明については、パーティションの重みを設定するを参照してください。
重みの設定
現在、テーブルグループの重み設定はMySQLモードでのみサポートされています。
ユーザーがクラスタの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';業務要件に応じて、テーブルグループの重みを設定します。
テーブルグループの重みは整数のみサポートされ、値の範囲は [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 サブプログラムを呼び出して、手動でパーティションの均等化をトリガーできます。手動でパーティションの均等化をトリガーする詳細な操作については、パーティションの均等化を手動でトリガーするを参照してください。
または、ユーザーは定期的なパーティションの均等化タスクのトリガーを待つこともできます。定期的なパーティションの均等化タスクの詳細については、定期的なパーティションの均等化タスクの設定を参照してください。
関連ドキュメント
テーブルグループの重みに関する適用事例については、テーブルグループの重みによる均等化の適用事例を参照してください。