首批通过分布式安全可靠测评,为关键业务系统打造
如何配置 OBServer 内存使用量
更新时间:2026-05-09 01:51
本文主要介绍如何配置 OBServer 内存使用量。
适用版本
OceanBase 数据库所有版本。
配置 OBServer 内存使用量
OceanBase 数据库通过系统配置项 memory_limit 与 memory_limit_percentage 限制 OBServer 的内存使用。
系统配置项 memory_limit 的默认值为 0。如果该值不为 0,系统会忽略 memory_limit_percentage 的设定而优先使用 memory_limit 参数配置的值。例如,一台物理机的内存为 100 GB,memory_limit_percentage 参数设置为 80,表示使用 80% 的内存,而 memory_limit 参数设置为 90 GB,则实际上物理机上 OceanBase 数据库可分配的内存使用 memory_limit 的配置,即 90 GB。
配置memory_limit 时需要注意以下事项。
memory_limit的默认单位为 MB。例如,
memory_limit='40G'表示将 observer 进程使用的内存上限设置为 40 GB;memory_limit=40960表示将 OceanBase 进程使用的内存上限设置为 40960 MB,与memory_limit='40G'相同。memory_limit的上限为 2^64^,这可能会导致设置的 OBServer 内存的最大使用上限大于物理内存的总和。如果希望限制运行中的 observer 进程的内存大小,可以直接修改
memory_limit的值,使其达到预期。后台 reload 线程会使其动态生效,无需重启。但是在设定时,需要保证memory_limit的值大于 OBServer 总的内存使用量,小于机器的物理内存。可以通过以下语句查询当前used_gb的大小。memory_limit参数值必须大于used_gb。obclient> SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE '%observer memory%' AND con_id = 1 AND stat_id=140008 AND name='observer memory used size'; +-----------------+ | used_gb | +-----------------+ | 10.582031250000 | +-----------------+ 1 row in set (0.03 sec)