テナントリソースの水平管理とは、主にリソースプールの UNIT_NUM を調整することで、テナントの利用可能なリソースを動的に変更することです。具体的には、リソースプールの UNIT_NUM を調整することで、各ゾーン内のユニット数を変更し、その結果、該当するゾーン上でのテナントのサービス能力を向上または低下させることができます。OceanBaseデータベースV4.0以降では、テナントの複数のリソースプール間でユニット数を異種化することはサポートされなくなりました。
UNIT_NUM の変更には、UNIT_NUM を増やす場合と減らす場合の2種類があります:
テナントに付与されていないリソースプールについては、個別に
UNIT_NUMを増減することができます。テナントに付与されたリソースプールについては、すべての付与済みリソースプールの
UNIT_NUMを同時に調整する必要があり、個別に調整することはできません。
V4.0.0バージョンから、OceanBaseデータベースではテナント内の各ゾーンのユニット数を一定に保つことが求められます。各ゾーンのユニットを一元管理しやすくするため、システムではユニットグループという仕組みが導入されました。これは、異なるゾーン間で同一の番号(UNIT_GROUP_ID)を持つユニットが同一のユニットグループに属するというものです。UNIT_NUM を増減することは、本質的にはユニットグループ単位でユニットを作成および削除することを意味します。
リソースプールの UNIT_NUM を調整するためのサンプルステートメントは以下のとおりです:
obclient> CREATE RESOURCE POOL rp1 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2');
1. リソースプールがテナントにバインドされていない場合のリソースプール unit_num の調整:
obclient> ALTER RESOURCE POOL rp1 UNIT_NUM 3; // UNIT_NUM を増やす
obclient> ALTER RESOURCE POOL rp1 UNIT_NUM 2; // UNIT_NUM を減らす
obclient> ALTER RESOURCE POOL rp1 UNIT_NUM 1 DELETE UNIT = (1001, 1003); // ユニットを指定して UNIT_NUM を減らす
2. リソースプールがテナントにバインドされている場合のテナント unit_num の調整:
obclient> CREATE RESOURCE POOL rp2 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2');
obclient> CREATE RESOURCE POOL rp3 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone3');
obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('rp2', 'rp3') ...;
obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 3; // 2つのリソースプールの UNIT_NUM を同時に増やす
obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1; // 2つのリソースプールの UNIT_NUM を同時に減らす
UNIT_NUMの増加
UNIT_NUM増加の例1:リソースプールを作成した後、テナントに割り当てる前であれば、個別のリソースプールの
UNIT_NUMを単独で増やすことができます。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');個別のリソースプールの
UNIT_NUMを単独で増やすステートメントは以下のとおりです。obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 3;UNIT_NUM増加の例2:UNIT_NUMを増やす場合は、通常、テナントのスケーリングアップシナリオで発生します。例えば、既にテナントに割り当てられたリソースプールの場合:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');この例では、テナント
ttがリソースプールr_p0を使用しています。zone1、zone2、zone3の各ゾーンにそれぞれ2つのユニットがありますが、業務量が増加するにつれて、各ゾーンの2つのユニットでは現在の業務量を処理できなくなります。そのため、新しいビジネスニーズを満たすために、テナントのサービス能力を向上させるためにUNIT_NUMを増やすことを検討する必要があります。以下のステートメントを使用して、リソースプール
r_p0内のテナントのユニット数を3に調整し、テナントのサービス能力を向上させることができます。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 3;
UNIT_NUMの減少
UNIT_NUM減少の例1:リソースプールを作成した後、テナントに割り当てる前であれば、個別のリソースプールの
UNIT_NUMを単独で減らすことができます。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');個別のリソースプールの
UNIT_NUMを単独で減らすステートメントは以下のとおりです:obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 1;UNIT_NUM減少の例2:UNIT_NUMを減らす場合は、通常、テナントのスケーリングダウンシナリオで発生します。例えば、既にテナントに割り当てられたリソースプールの場合:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0');この例では、テナント
ttがリソースプールr_p0を使用しています。zone1、zone2、zone3の各ゾーンにそれぞれ2つのユニットがありますが、業務の調整により、各ゾーンに2つのユニットが不要になったため、新しいビジネスニーズを満たすためにUNIT_NUMを減らすことを検討する必要があります。以下のステートメントを使用して、リソースプール
r_p0内のテナントのユニット数を1に調整し、テナントのサービス能力を低下させることができます。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1;または、指定された
UNIT_GROUPを削除することでUNIT_NUMの数を減らすこともできます。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1 DELETE UNIT_GROUP =(1001);