管理资源单元(Resource Unit)
创建资源单元
语法
CREATE RESOURCE UNIT unitname
MAX_CPU [=] cpunum,
MAX_MEMORY [=] memsize,
MAX_IOPS [=] iopsnum,
MAX_DISK_SIZE [=] disksize,
MAX_SESSION_NUM [=] sessionnum,
[MIN_CPU [=] cpunum,]
[MIN_MEMORY [=] memsize,]
[MIN_IOPS [=] iopsnum] ;
参数说明
-
必须指定 CPU、Memory、IOPS、Disk Size 和 Session Num 的大小
-
参数值设置:可以使用纯数字不带引号的方式,也可以使用带单位加引号的方式
max_memory='10G'
等效于max_memory=10737418240
-
MAX_MEMORY
的取值范围为 [1073741824,+∞),单位为字节,即最小值为 1 G。 -
MAX_IOPS
的取值范围为 [128,+∞)。 -
MAX_DISK_SIZE
的取值范围为 [536870912,+∞],单位为字节,即最小值为 512 M。 -
MAX_SESSION_NUM
的取值范围为 [64,+∞)。
示例
CREATE RESOURCE UNIT unit1 MAX_CPU 1, MAX_MEMORY '1G', MAX_IOPS 128,MAX_DISK_SIZE '10G', MAX_SESSION_NUM 64, MIN_CPU=1, MIN_MEMORY='1G', MIN_IOPS=128;
-- 等效
CREATE RESOURCE UNIT unit1 MAX_CPU 1, MAX_MEMORY 1073741824, MAX_IOPS 128, MAX_DISK_SIZE 10737418240, MAX_SESSION_NUM 64, MIN_CPU=1, MIN_MEMORY=1073741824, MIN_IOPS=128;
资源单元 unit1
创建后,可以创建资源池 pool1
和 pool2
并且 pool1
和 pool2
均使用 unit1
资源单元的配置。
查看资源单元
通过内部表查看
SELECT * FROM __all_unit_config;
修改资源单元
动态调整租户的资源单元大小
ALTER RESOURCE UNIT unit1 MAX_CPU 5, MAX_MEMORY 1288490188, MAX_IOPS 128,max_disk_size 8589934592, MAX_SESSION_NUM 64, MIN_CPU=2, MIN_MEMORY 1073741824, MIN_IOPS=128;
删除资源单元
删除资源单元前必须确保当前资源单元未被使用。如果资源单元正在被使用,则需要先将资源单元从资源池中移除后再删除资源单元。
DROP RESOURCE UNIT unitname;
当资源单元被使用时,不可删除
删除资源单元
资源池管理(Resource Pool)
创建资源池
在创建新租户时,如果当前的资源池均被使用(被其他租户使用),需要创建新的资源池。
语法
CREATE RESOURCE POOL poolname
UNIT [=] unitname,
UNIT_NUM [=] unitnum,
ZONE_LIST [=] ('zone' [, 'zone' ...]);
- 参数
unit_num
表示在集群的一个 Zone 里面包含的资源单元个数。该值小于等于一个 Zone 中的 OBServer 的个数。 - 参数
zone_list
表示资源池的 Zone 列表,显示该资源池的资源在哪些 Zone 中被使用。
示例
CREATE RESOURCE POOL pool1 unit='unit1', unit_num=1, zone_list=('zone1','zone2','zone3');
查看资源配置
SELECT * FROM oceanbase.gv$unit;
修改资源池
语法
ALTER RESOURCE POOL poolname
UNIT [=] unitname,
UNIT_NUM [=] unitnum,
ZONE_LIST [=] ('zone'[, 'zone' ...]);
说明
- 修改资源池的命令每次仅支持修改一个参数值。
- 被修改的资源池必须是没有被使用的或者不包含任何资源单元的空的资源池。
- 新创建的资源池不能更改
zone_list
。
示例
修改资源池 pool1
的资源单元,修改后 unit2
替代 unit1
属于资源池pool1
ALTER RESOURCE POOL pool1 unit='unit2'
删除资源池
DROP RESOURCE POOL poolname;