暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

基于官方文档的OceanBase 知识学习-内存管理 (基于官方文档做记录 V2.2.77版本)

原创 lxs_data 2022-01-06
1260

OceanBase 内存

      OceanBase 数据库采取占据服务器的大部分内存并进行统一管理的方式来管理内存。

     当有新业务需要上线时为其创建一个新租户,其中内存是从租户可分配内存中划分资源,租户 CPU 和内存的大小取决于业务规模。

      当可分配的 CPU 和内存资源不足时,可以水平扩展 OceanBase 集群,为不断扩展的业务规模提供可持续的服务能力。

OceanBase 内存结构

OceanBase 数据库内存结构图:


     OceanBase 数据库占用了服务器的大量内存 (OBServer Total Memory):

          一部分用于自身系统运行(Memory Reserved For OBServer)

          一部分用于划分给创建的租户(Allocatable Memory For OBServer)。

          每个租户等同于传统数据库的一个实例,不同租户的内存模块组成是一样的,其内存又分为装载增量数据的 MemStore(Tenant MemStore)以及 KVCache 缓存(Tenant Cache Memory)。

OceanBase 数据库内存上限

   两种方式设置OceanBase 数据库自身内存的上限:

  • 按照计算机器总内存上限的百分比计算自身可以使用的总内存,由 memory_limit_percentage参数配置

  • 直接设置 OceanBase 数据库可用内存的上限,由memory_limit 参数配置。其中memory_limit 参数值为 0 时,使用百分比的配置方式,否则使用绝对值的配置方式

    示例:当在一台 100 GB 的机器上启动一个 OceanBase 数据库实例时,memory_limit_percentage 和 memory_limit 参数的值是如何影响 OceanBase 数据库的内存上限的。

示例

memory_limit_percentage

memory_limit

OceanBase 数据库内存上限

示例 1

80

0

80 GB

示例 2

80

90 GB

90 GB

示例 1 中由于 memory_limit 为 0,故以 memory_limit_percentage 为准,OceanBase 数据库内存上限为 100GB*80%=80 GB。

示例2 中由于 memory_limit 为 90 GB,故以 memory_limit 为准,OceanBase 数据库内存上限为 90 GB。

  目前主流的 OceanBase 数据库服务器一般内存为 384 GB 或 512 GB,384 GB 内存建议配置为使用机器内存的 80%,512 GB 内存建议配置为使用机器内存的 90%。

系统内部内存管理

      OceanBase 数据库内存上限中配置的内存并不能全部分配给租户使用

      每一个 OBServer 上租户都会共享部分资源或功能。由于这些共享的资源或功能所使用的内存并不属于任何一个普通租户,故这类内存被归结为系统内部内存。

      系统内部可使用的内存上限可通过system_memory 参数来配置,该参数表示系统内部可使用 OceanBase 数据库内存的上限。

      例如,假设 OceanBase 数据库内存上限为 80 GB,system_memory 的值为 20 GB,那么可用于租户分配的内存就是剩下的 60 GB。
























「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论