OBserver 关于内存设置和会话内存占用问题请教

【 使用环境 】生产环境
【 OB or 其他组件 】OBServer
【 使用版本 】4.3.0及以上版本
【问题描述】
各位大佬们,请教两个OB内存分配上的疑问:

1、OB集群在搭建的时候,是否有建议给系统预留多少内存资源不?就比如我有100G的内存资源,只安装OBserver服务,我可以设置OB使用99G,给系统预留1G的资源,把系统可用的资源全部分配给OBserver使用,但是设置之后是否会影响系统稳定性之类的?想问下在OB的安装部署上,是否有给系统资源预留多少内存的参考值?

2、OB是否有类似oracle 和mysql 之类的会话占用内存值?比如Mysql 或者oracle 一个会话连接进来,就直接会分配2MB或者多少的内存资源,后续做大查询的时候这个会话占用的内存会继续增大,空闲的时候是否会释放掉大查询时所消耗的内存资源?如果有的话,这块会话使用的内存资源是使用OBserver 内部的,也就是那个memory_limit 的内存资源,还是使用memory_limit 以外剩余的内存资源?

2 个赞

https://open.oceanbase.com/blog/10071546640
这有一篇博客 你看看 ob的实战配置

1 个赞

1.以前部署默认都是操作系统的80%内存占比,这个可以手动调整。但要给操作系统留,因为ob是预占用
2.OceanBase 内存管理概况

  1. 会话内存分配
  • 当新会话连接到 OceanBase 时,系统确实会为该会话分配一定的内存。这个内存分配主要是为了支持查询和事务的处理。
  • OceanBase 使用的内存资源通常包括工作内存和执行内存等。
  1. 内存使用的增大
  • 在执行复杂查询时,可能会需要更多的内存来处理这些操作,尤其是涉及大数据集的情况下。
  • OceanBase 采用了一定的策略来动态调整内存使用,以支持高效查询。
  1. 空闲时内存的释放
  • 一般情况下,OceanBase 会适当地释放不再使用的内存资源。这意味着当会话空闲或查询完成后,相关的内存会被标记为可回收。
  • 具体的释放策略可能会受到内存管理策略和系统负载的影响。
  1. 内存限制(memory_limit)
  • OceanBase 的内存管理会使用配置的 memory_limit 来限制会话的最大内存使用。
  • 会话使用的内存是管理在 OceanBase 服务器内的,通常在 memory_limit 范围内进行动态分配和释放。
  • 若会话内存使用超过设定的限制,可能会导致查询失败或性能下降

总结

OceanBase 在内存管理上与其他数据库(如 MySQL 和 Oracle)有相似之处,也有其自身的特性。对于会话内存的具体管理、使用及释放情况,OceanBase 会根据负载和策略进行调节,确保系统的稳定性和性能。

1 个赞

感谢大佬,解释的很详细

1 个赞