首批通过分布式安全可靠测评,为关键业务系统打造
通过 SQL 语句调整 OceanBase 数据库 V3.x 版本租户资源规格
更新时间:2026-07-17 07:16
本文主要介绍如何通过 SQL 语句调整 OceanBase 数据库 V3.x 版本租户资源规格。
示例如下。
连接 root@sys 租户,确认需要调整规格的租户 tenant_id。
mysql -h127.1 -uroot@sys -P2881 -p -A oceanbase -c select * from __all_tenant;通过 SQL 查询到该 tenant_id 对应的资源池 NAME。
SELECT /*+ READ_CONSISTENCY(WEAK) QUERY_TIMEOUT(60000000) */ time_to_usec(t1.gmt_modified) AS update_time, t1.resource_pool_id, t1.`name`, t1.unit_count, t1.unit_config_id, t1.zone_list, t1.tenant_id,(CASE t1.replica_type WHEN 0 THEN 'FULL' WHEN 5 THEN 'LOGONLY' WHEN 16 THEN 'READONLY' ELSE NULL END) AS replica_type, t2.`name` AS unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory, t2.min_memory FROM oceanbase.__all_resource_pool AS t1 JOIN oceanbase.__all_unit_config AS t2 ON t1.unit_config_id = t2.unit_config_id AND t1.tenant_id = ?上述 SQL 查询语句中将最后的
?替换为 tenant_id。创建合适大小的 UNIT 资源规格。
## -- 获取当前可用资源的 SQL 查询。 SELECT svr_ip, svr_port, zone, cpu_total, cpu_assigned, cpu_max_assigned, cpu_total - cpu_max_assigned cpu_free, round(mem_total / 1024 / 1024 / 1024, 1) "mem_total(G)", round(mem_assigned / 1024 / 1024 / 1024, 1) "mem_assigned(G)", round(mem_max_assigned / 1024 / 1024 / 1024, 1) "mem_max_assigned(G)", round((mem_total - mem_max_assigned) / 1024 / 1024 / 1024, 1) "mem_free(G)", round(disk_total / 1024 / 1024 / 1024, 1) "disk_total(G)", round(disk_assigned / 1024 / 1024 / 1024, 1) "disk_assigned(G)", disk_assigned_percent, unit_num FROM oceanbase.__all_virtual_server_stat ORDER BY zone\G根据上述获取当前可用资源的 SQL 查询可知可用的 CPU 和内存信息,设置合适的参数。
以下 unit_B 为新建的资源规格名,X 和 Y 需要替换为具体可用的 CPU (cpu_free,其值以 X 表示) 和可用的内存 (mem_free,其值以 Y 表示)。
CREATE RESOURCE UNIT IF NOT EXISTS unit_B max_cpu X, min_cpu X, max_memory 'YG', min_memory 'YG', max_session_num 65535, max_iops 1250, min_iops 1250, max_disk_size '100G';查询新建的 UNIT 资源规格。
SELECT unit_config_id, name, max_cpu, min_cpu, max_memory, min_memory FROM oceanbase.__all_unit_config WHERE `name` = ?;上述 SQL 查询语句中将最后的
?替换为 unit_B。修改资源池的 UNIT 资源规格。
ALTER RESOURCE POOL `pool_name` UNIT = ?;将 pool_name 替换为资源池 NAME,将最后的
?替换为 unit_B。再次查询目前租户 tenant_id 的规格。
SELECT /*+ READ_CONSISTENCY(WEAK) QUERY_TIMEOUT(60000000) */ time_to_usec(t1.gmt_modified) AS update_time, t1.resource_pool_id, t1.`name`, t1.unit_count, t1.unit_config_id, t1.zone_list, t1.tenant_id,(CASE t1.replica_type WHEN 0 THEN 'FULL' WHEN 5 THEN 'LOGONLY' WHEN 16 THEN 'READONLY' ELSE NULL END) AS replica_type, t2.`name` AS unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory, t2.min_memory FROM oceanbase.__all_resource_pool AS t1 JOIN oceanbase.__all_unit_config AS t2 ON t1.unit_config_id = t2.unit_config_id AND t1.tenant_id = ?
适用版本
OceanBase 数据库 V3.x 及以下版本。