首批通过分布式安全可靠测评,为关键业务系统打造
租户资源水平扩缩容
更新时间:2026-04-10 11:58:35
租户资源的水平管理主要是通过调整资源池的 UNIT_NUM 来动态调整租户的可用资源。具体表现为,您可以通过调整资源池的 UNIT_NUM 来调整资源池下每个 Zone 内 Unit 数量,进而提高或降低该租户在对应 Zone 上的服务能力。OceanBase 数据库 V4.0 版本后,不再支持租户的多个 Resource Pool 的 Unit 数目异构。
UNIT_NUM 的变更也分为两类,即调大 UNIT_NUM 和调小 UNIT_NUM:
对于未授予租户的 Resource Pool,可以单独调小或调大 Resource Pool 的
UNIT_NUM。对于已授予租户的 Resource Pool,只能同时调整所有已授予租户的 Resource Pool 的
UNIT_NUM,无法单独调整。
从 V4.0.0 版本开始,OceanBase 数据库要求租户内每个 Zone 的 Unit 个数必须保持一致。为了方便统一管理各个 Zone 的 Unit,系统引入了 Unit Group 机制,即不同 Zone 之间相同编号(UNIT_GROUP_ID)的 Unit 属于同一个 Unit Group。调大或调小 UNIT_NUM 本质上是以 Unit Group 为单位创建和删除 Unit。
调整资源池 UNIT_NUM 的示例语句如下:
obclient> CREATE RESOURCE POOL rp1 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2');
1. resource pool 没有与租户绑定时调整 resource pool 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. resource pool 与租户绑定时调整租户 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; // 同时调大两个 Resource Pool 的 UNIT_NUM
obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 1; // 同时调小两个 Resource Pool 的 UNIT_NUM
调大 UNIT_NUM
UNIT_NUM调大示例 1:创建 Resource Pool 后,在未授予租户时,可以单独调大单个 Resource Pool 的
UNIT_NUM。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');单独调大单个 Resource Pool 的
UNIT_NUM,语句如下。obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 3;UNIT_NUM调大示例 2:调大
UNIT_NUM通常出现在租户扩容的场景中,例如,对于已授予租户的 Resource Pool: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每个 Zone 上分别有 2 个 Unit,随着业务量的不断变大,每个 Zone 上 2 个 Unit 无法承载当前的业务量,因此需要考虑调大UNIT_NUM来提高租户的服务能力,以满足新的业务需求。您可以使用以下语句将租户在资源池
r_p0的 Unit 数量调整为3,进而提高租户的服务能力。obclient> ALTER RESOURCE TENANT tt UNIT_NUM = 3;
调小 UNIT_NUM
UNIT_NUM调小示例 1:创建 Resource Pool 后,在未授予租户时,可以单独调小单个 Resource Pool 的
UNIT_NUM。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2', 'zone3');单独调小单个 Resource Pool 的
UNIT_NUM,语句如下:obclient> ALTER RESOURCE POOL r_p0 UNIT_NUM 1;UNIT_NUM调小示例 2:调小
UNIT_NUM通常出现在租户缩容的场景中,例如,对于已授予租户的 Resource Pool: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每个 Zone 上分别有 2 个 Unit,随着业务调整,不再需要每个 Zone 上 2 个 Unit ,因此需要考虑调小UNIT_NUM,以满足新的业务需求。您可以使用以下语句将租户在资源池
r_p0的 Unit 数量调整为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);