首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【赵渝强老师】OceanBase的内存管理

【赵渝强老师】OceanBase的内存管理

原创
作者头像
赵渝强老师
发布2025-10-13 14:23:42
发布2025-10-13 14:23:42
460
举报
文章被收录于专栏:OceanBaseOceanBase

OceanBase数据库是多租户设计的数据库,同一个进程会运行着多个租户的请求,从租户资源划分上可以分为三类,500租户内存、系统租户内存、业务租户内存。

  • 500是个特殊的虚拟租户,共享性的、非实体租户消耗的内存都被OceanBase数据库划归500租户。
  • 系统租户是OceanBase数据库自动创建的第一个实体租户,管理着集群相关的内部表,这些内部表上的请求触发的内存就划归到了sys租户。
  • 业务租户就是集群安装后由DBA创建的跑业务流量的实体租户,这些租户的请求触发的内存就划归租户自己。

视频讲解如下:

OceanBase数据库支持通过参数来设置和管理内存的使用,这里主要关注两个方面的内存参数:OBServer节点总内存和业务租户内存。

OBServer节点总内存

表示OBServer节点所有内存的上限,即所有租户累加不可能超过的上限,由以下两个参数控制:

  • memory_limit_percentage 物理机或者容器物理内存的百分比
  • memory_limit 内存的绝对数值

当memory_limit不为0M时,使用memory_limit作为上限, 否则使用memory_limit_percentage计算后的值作为上限。

下面展示了这两个参数的相关信息:

代码语言:sql
复制
ob> show parameters  like 'memory_limit%' \G;

# 输出的信息如下:
*************************** 1. row ***************************
         zone: zone1
     svr_type: observer
       svr_ip: 192.168.79.10
     svr_port: 2882
         name: memory_limit_percentage
    data_type: INT
        value: 80
         info: the size of the memory reserved for internal use
(for testing purpose). Range: [10, 95]
      section: OBSERVER
        scope: CLUSTER
       source: DEFAULT
   edit_level: DYNAMIC_EFFECTIVE
default_value: 80
    isdefault: 1
*************************** 2. row ***************************
         zone: zone1
     svr_type: observer
       svr_ip: 192.168.79.10
     svr_port: 2882
         name: memory_limit
    data_type: CAPACITY
        value: 10G
         info: the size of the memory reserved for internal use
(for testing purpose), 
0 means follow memory_limit_percentage. Range: 0, [1G,).
      section: OBSERVER
        scope: CLUSTER
       source: DEFAULT
   edit_level: DYNAMIC_EFFECTIVE
default_value: 0M
    isdefault: 0
2 rows in set (0.014 sec)

通过使用命令obd cluster edit-config <集群名称> 可以修改OBServer节点的总内存大小。

业务租户内存

业务租户内存由租户创建ResourceManager Unit(资源单元)时指定。系统租户可以通过视图查询Resource Unit的规格,例如:

代码语言:sql
复制
ob> select name,MAX_CPU,MIN_CPU,MEMORY_SIZE,LOG_DISK_SIZE 
from oceanbase.DBA_OB_UNIT_CONFIGS;

# 输出的信息如下:
+-----------------+---------+---------+-------------+---------------+
| name            | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE |
+-----------------+---------+---------+-------------+---------------+
| sys_unit_config |       1 |       1 |  2147483648 |    2147483648 |
| ru1             |       1 |       1 |  2147483648 |    2147483648 |
| ru2             |       1 |       1 |  2147483648 |    2147483648 |
| ru3             |       1 |       1 |  2147483648 |    2147483648 |
+-----------------+---------+---------+-------------+---------------+
4 rows in set (0.004 sec)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OBServer节点总内存
  • 业务租户内存
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档