内存分配咨询

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.0
【问题描述】

OB文档对内存分配描述如下,请问:如下例子中,可用于租户分配内存60GB,是不是sys租户也得从这60GB中分配?

系统内部内存管理。
虽然 OceanBase 数据库支持多租户架构,但是 OceanBase 数据库内存上限中配置的内存并不能全部分配给租户使用,因为每一个 OBServer 上租户都会共享部分资源或功能。由于这些共享的资源或功能所使用的内存并不属于任何一个普通租户,故这类内存被归结为系统内部内存。
系统内部可使用的内存上限可通过 system_memory 参数来配置,该参数是对系统内部使用内存的预估,实际上限制的是租户可使用的内存上限,即 memory_limit - system_memory
例如,假设 OceanBase 数据库内存上限为 80 GB,system_memory 的值为 20 GB,那么可用于租户分配的内存就是剩下的 60 GB。

【附件】

system_memory 即为 系统租户内存。例子中的60g完全用于除sys租户之外的租户

补充一些:memory_limit是ob可用内存上限,system_memory是ob sys 租户内存预设的一个值,这个值只是预设,但有可能因为ob系统内部的内存分配需要而增加,同时会挤占其他用户的内存,但不会超过memory_limit的设定

明白了,感谢

@夏进 @谐云 还有有点疑惑,这个图是从obcp的教材第二章《OB 存储引擎高级技术》里面找出来的,按照图中的内存划分,system memory的内存是不属于sys租户的。

1 个赞

以图上的为准,system memory是系统内部内存,不独属于任何租户。

感谢感谢,明白了