首批通过分布式安全可靠测评,为关键业务系统打造
如何计算 SYS 租户的资源规格
更新时间:2026-06-10 01:56
本文主要介绍如何计算 sys 租户(tenant_id=1)的 CPU/Memory 资源规格。
适用版本
OceanBase 数据库 2.x、3.x、4.x 版本
计算 sys 租户的资源规格
RS 在 bootstrap 阶段会产生一条内部 SQL 用来创建 sys_unit_config,sys 租户创建时再使用 sys_unit_config 去创建 resource pool。
说明
相关日志可以使用关键字 sys_unit_config 去 observer 日志中搜索出来。
不过在 OceanBase 数据库 4.x 中,租户的规格不再区分 MAX_MEMORY/MIN_MEMORY 了,因此 OceanBase 数据库 4.x 和 OceanBase 数据库 2.x/3.x 中 sys 租户的资源规格的计算方法略有不同。
OceanBase 数据库 2.x/3.x 中
sys 租户的资源规格计算方法如下:
memory_limit = select value from __all_virtual_sys_parameter_stat where name='memory_limit';
memory_reserved = select value from __all_virtual_sys_parameter_stat where name='system_memory';
max_memory = min(0.3 * (memory_limit - memory_reserved), 16G)
min_memory = min(0.25 * (memory_limit - memory_reserved), 12G)
max_cpu = select value from __all_virtual_sys_parameter_stat where name='server_cpu_quota_max';
min_cpu = select value from __all_virtual_sys_parameter_stat where name='server_cpu_quota_min';
比如小规格 MetaDB 的部署中,OceanBase 数据库内存 = 13G,500 租户预留内存(即 system_memory) = 5G,最后计算出来的 sys 租户的 max_memory = min(0.3 * (13G - 5G), 12G) = 2.4G,min_memory = min(0.25 * (13G - 5G), 12G) = 2G。而默认的 server_cpu_quota_max/server_cpu_quota_min 值如下:
MySQL [oceanbase]> show parameters like 'server_cpu_quota%';
结果如下:
+-------------+----------+---------------+----------+----------------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+------------------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |
+-------------+----------+---------------+----------+----------------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+------------------+
| META_ZONE_1 | observer | 11.xxx.xx.xxx | 2882 | server_cpu_quota_max | NULL | 5 | the number of maximal vCPUs allocated to the server tenant(a special internal tenant that exists on every observer). Range: [0, 16] | TENANT | CLUSTER | DEFAULT | STATIC_EFFECTIVE |
| META_ZONE_1 | observer | 11.xxx.xx.xxx | 2882 | server_cpu_quota_min | NULL | 2.5 | the number of minimal vCPUs allocated to the server tenant(a special internal tenant that exists on every observer). Range: [0, 16] | TENANT | CLUSTER | DEFAULT | STATIC_EFFECTIVE |
+-------------+----------+---------------+----------+----------------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+------------------+
2 rows in set (0.00 sec)
OceanBase 数据库 4.x 中
sys 租户的 CPU 规格继续受 server_cpu_quota_min/server_cpu_quota_max 这两个配置项控制,但不同的是 4.0 以后这两个配置项默认值都是 1,而 4.0 以前默认值分别为 2.5 和 5。
因此 4.x 中在 OceanBase 集群刚创建完 sys 租户的 CPU 个数为 1,如果用户想调大 CPU 可以直接调整 sys_unit_config,该配置是动态生效的。
sys 租户的 memory_size 缺省值为 max(__min_full_resource_pool_memory, min( (memory_limit - system_limit) * 0.25, 16G))。
更多信息
在某些小规格内存的环境上安装 OceanBase 数据库时,在 bootstrap 这一步经常容易遇到如下报错:unit min memory less than __min_full_resource_pool_memory not supported。关于该错误的问题原因及解决方法,可以参考文档 bootstrap 报错,小于最小资源池内存限制。