OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构

从官网的结构图可以看出,一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory)租户内存(sys租户与普通租户)

系统内存

系统内存system_memory 属于 observer 的内部内存,允许其它租户共享使用该内存资源

(root@10.0.0.61:2883) [oceanbase]> show parameters like 'system_memory';
+-------+----------+-----------+----------+---------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip    | svr_port | name          | data_type | value | info                                                                                                                                                                    | section  | scope   | source  | edit_level        |
+-------+----------+-----------+----------+---------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 10.0.0.61 |     2882 | system_memory | NULL      | 1G    | the memory reserved for internal use which cannot be allocated to any outer-tenant, and should be determined to guarantee every server functions normally. Range: [0M,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------+----------+---------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 row in set (0.018 sec)

租户内存

sys租户内存创建的普通租户内存,OceanBase集群的租户 真正可分配使用的内存 可使用的总内存(memory_limit) — 系统内存(system_memory),每个租户内存 包含 增量数据的 MemStore(tenant memstore)以及 KVCache 缓存(tenant cache memory)

注:以下实验环节使用OceanBase 3.2.4.5企业版本,均使用sys租户登录查看

查看OBserver内存

可以查看当前 OBserver 总内存 mem_total 为15G,已经分配了10G,总的CPU为14,目前CPU已经全部分配

(root@10.0.0.61:2883) [oceanbase]> select zone,cpu_total,cpu_assigned,mem_total/1024/1024/1024,mem_assigned/1024/1024/1024 from __all_virtual_server_stat;
+-------+-----------+--------------+--------------------------+-----------------------------+
| zone  | cpu_total | cpu_assigned | mem_total/1024/1024/1024 | mem_assigned/1024/1024/1024 |
+-------+-----------+--------------+--------------------------+-----------------------------+
| zone1 |        14 |           14 |          15.000000000000 |             10.000000000000 |
+-------+-----------+--------------+--------------------------+-----------------------------+
1 row in set (0.015 sec)


(root@10.0.0.61:2883) [oceanbase]>

注意

mem_total值(租户可使用内存)总内存(memory_limit) — 系统内存(system_memory)

(root@10.0.0.61:2883) [oceanbase]> show parameters like 'system_memory';
+-------+----------+-----------+----------+---------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip    | svr_port | name          | data_type | value | info                                                                                                                                                                    | section  | scope   | source  | edit_level        |
+-------+----------+-----------+----------+---------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 10.0.0.61 |     2882 | system_memory | NULL      | 1G    | the memory reserved for internal use which cannot be allocated to any outer-tenant, and should be determined to guarantee every server functions normally. Range: [0M,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------+----------+---------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 row in set (0.011 sec)


(root@10.0.0.61:2883) [oceanbase]>
(root@10.0.0.61:2883) [oceanbase]>
(root@10.0.0.61:2883) [oceanbase]> show parameters like 'memory_limit';
+-------+----------+-----------+----------+--------------+-----------+-------+-------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip    | svr_port | name         | data_type | value | info                                                                                | section  | scope   | source  | edit_level        |
+-------+----------+-----------+----------+--------------+-----------+-------+-------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit | NULL      | 16G   | the size of the memory reserved for internal use(for testing purpose). Range: [0M,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------+----------+--------------+-----------+-------+-------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
1 row in set (0.019 sec)


(root@10.0.0.61:2883) [oceanbase]>

查看租户内存

查看每个租户可用内存

这里查看的是 每个租户可使用的最大内存,包含memstore。 其实就是创建租户时指定的max_memory的值

(root@10.0.0.61:2883) [oceanbase]> select tenant_id,tenant_name,max_cpu,min_cpu,max_memory/1024/1024/1024 from v$unit;
+-----------+-------------+---------+---------+---------------------------+
| tenant_id | tenant_name | max_cpu | min_cpu | max_memory/1024/1024/1024 |
+-----------+-------------+---------+---------+---------------------------+
|      NULL | NULL        |       2 |       2 |            2.000000000000 |
|         1 | sys         |       4 |       4 |            2.000000000000 |
|      1001 | obmysql     |       2 |       2 |            4.000000000000 |
|      1002 | oboracle    |       2 |       2 |            2.000000000000 |
|      1006 | tnt_pay     |       2 |       2 |            1.000000000000 |
|      1009 | oboms       |       2 |       2 |            1.000000000000 |
+-----------+-------------+---------+---------+---------------------------+
6 rows in set (0.032 sec)


(root@10.0.0.61:2883) [oceanbase]>

查看每个租户 memstore 内存

通过 tenant_id(租户标识字段)memstore_limit(可使用的memstore内存) 来查看租户内存情况。500租户(系统内存存放的租户)可使用内存最大,为4G

(root@10.0.0.61:2883) [oceanbase]> select tenant_id,round(active/1024/1024/1024,2) active,round(total/1024/1024/1024,2) total,round(freeze_trigger/1024/1024/1024,2)
    -> freeze_trigger,round(mem_limit/1024/1024/1024,2) memstore_limit from v$memstore;
+-----------+--------+-------+----------------+----------------+
| tenant_id | active | total | freeze_trigger | memstore_limit |
+-----------+--------+-------+----------------+----------------+
|         1 |   0.20 |  0.20 |           0.30 |           1.00 |
|       500 |   0.00 |  0.00 |  1288490188.80 |  4294967296.00 |
|      1001 |   0.13 |  0.13 |           0.60 |           2.00 |
|      1002 |   0.11 |  0.11 |           0.30 |           1.00 |
|      1006 |   0.10 |  0.10 |           0.15 |           0.50 |
|      1009 |   0.10 |  0.28 |           0.15 |           0.50 |
+-----------+--------+-------+----------------+----------------+
6 rows in set (0.010 sec)


(root@10.0.0.61:2883) [oceanbase]>

修改OBserver内存

可以看到 memory_limit_percentage(可使用服务器物理内存最大百分比)memory_limit(OBserver总内存) 分别为 90% 与 16G

(root@10.0.0.61:2883) [oceanbase]> show parameters like 'memory_limit%';
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip    | svr_port | name                    | data_type | value | info                                                                                   | section  | scope   | source  | edit_level        |
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit_percentage | NULL      | 90    | the size of the memory reserved for internal use(for testing purpose). Range: [10, 90] | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit            | NULL      | 16G   | the size of the memory reserved for internal use(for testing purpose). Range: [0M,)    | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
2 rows in set (0.005 sec)


(root@10.0.0.61:2883) [oceanbase]>

修改 memory_limit_percentage

将百分比值改为60

(root@10.0.0.61:2883) [oceanbase]> alter system set memory_limit_percentage=60;
Query OK, 0 rows affected (0.389 sec)


(root@10.0.0.61:2883) [oceanbase]>
(root@10.0.0.61:2883) [oceanbase]> show parameters like 'memory_limit%';
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip    | svr_port | name                    | data_type | value | info                                                                                   | section  | scope   | source  | edit_level        |
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit_percentage | NULL      | 60    | the size of the memory reserved for internal use(for testing purpose). Range: [10, 90] | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit            | NULL      | 16G   | the size of the memory reserved for internal use(for testing purpose). Range: [0M,)    | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
2 rows in set (0.011 sec)

再次查看OBserver总内存

可以发现 即使修改 memory_limit_percentage 的值,但是mem_total总内存依然不变

(root@10.0.0.61:2883) [oceanbase]> select zone,cpu_total,cpu_assigned,mem_total/1024/1024/1024,mem_assigned/1024/1024/1024 from __all_virtual_server_stat;
+-------+-----------+--------------+--------------------------+-----------------------------+
| zone  | cpu_total | cpu_assigned | mem_total/1024/1024/1024 | mem_assigned/1024/1024/1024 |
+-------+-----------+--------------+--------------------------+-----------------------------+
| zone1 |        14 |           14 |          15.000000000000 |             10.000000000000 |
+-------+-----------+--------------+--------------------------+-----------------------------+
1 row in set (0.021 sec)


(root@10.0.0.61:2883) [oceanbase]>

修改 memory_limit

将 memory_limit 值改为13

(root@10.0.0.61:2883) [oceanbase]> alter system set memory_limit='13G';
Query OK, 0 rows affected (0.175 sec)


(root@10.0.0.61:2883) [oceanbase]>
(root@10.0.0.61:2883) [oceanbase]>
(root@10.0.0.61:2883) [oceanbase]> show parameters like 'memory_limit%';
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip    | svr_port | name                    | data_type | value | info                                                                                   | section  | scope   | source  | edit_level        |
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit_percentage | NULL      | 60    | the size of the memory reserved for internal use(for testing purpose). Range: [10, 90] | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
| zone1 | observer | 10.0.0.61 |     2882 | memory_limit            | NULL      | 13G   | the size of the memory reserved for internal use(for testing purpose). Range: [0M,)    | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------+----------+-------------------------+-----------+-------+----------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
2 rows in set (0.006 sec)


(root@10.0.0.61:2883) [oceanbase]>

再次查看OBserver总内存

修改 memory_limit 的值,mem_total总内存发生变化

(root@10.0.0.61:2883) [oceanbase]> select zone,cpu_total,cpu_assigned,mem_total/1024/1024/1024,mem_assigned/1024/1024/1024 from __all_virtual_server_stat;
+-------+-----------+--------------+--------------------------+-----------------------------+
| zone  | cpu_total | cpu_assigned | mem_total/1024/1024/1024 | mem_assigned/1024/1024/1024 |
+-------+-----------+--------------+--------------------------+-----------------------------+
| zone1 |        14 |           14 |          12.000000000000 |             10.000000000000 |
+-------+-----------+--------------+--------------------------+-----------------------------+
1 row in set (0.003 sec)

总结

1.当 memory_limit_percentage(可使用服务器物理内存最大百分比) 值 与 memory_limit(OBserver总内存) 值 均不为空时,OBserver总内存以 memory_limit为主,不受 memory_limit_percentage 影响。如果 memory_limit值为0,OBserver总内存 受

memory_limit_percentage 改变影响。

2.每个租户可用内存 包含 增量数据的 MemStore(tenant memstore)以及 KVCache 缓存(tenant cache memory)

3.OceanBase集群的租户 真正可分配使用的内存 可使用的总内存(memory_limit) — 系统内存(system_memory),但系统内部内存允许其它租户共享使用该内存资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685660.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2转vue3初步下载pnpm遇到的问题 pnpm : 无法加载文件 D:\nodejs\pnpm.ps1

安装pnpm npm install -g pnpm pnpm -v 提示: 解决:nvm install 18.18.0 下载最稳定版本的nodejs nvm use 18.18.0 然后注意重新下载删除pnpm npm uninstall -g pnpm npm install -g pnpmlatest 在vscode使用pnpm报错 解决:管理员运行Windo…

爬虫(没)入门:用 node-crawler 爬取 blog

起因 前几天想给一个项目加 eslint,记得自己曾经在博客里写过相关内容,所以来搜索。但是发现 csdn 的只能按标题,没办法搜正文,所以我没搜到自己想要的内容。 没办法只能自己又重新折腾了一通 eslint,很烦躁。迁怒于…

tomcat配置请求的最大参数个数和请求数据大小

maxParameterCount"10000" maxPostSize"10485760" maxParameterCount:单个请求最大请求参数个数; maxPostSize:单个请求最大数据大小,1048576010M;

flutter3-os:基于flutter3.x+dart3+getx手机版os管理系统

flutter3-os-admin跨平台手机后台OS系统。 原创Flutter3.22Dart3.4Getxfl_chart等技术开发仿ios手机桌面OA管理系统。自研栅格化布局引擎、自定义桌面壁纸、小部件、底部Dock菜单、可拖拽悬浮球等功能。 全新自研栅格化OS菜单布局引擎。 使用技术 编辑器:VScode技术…

【架构模型】

一、客户端/服务端模式 二、单击应用模式 单机应用系统是最简单的软件结构,是指运行在一台物理机器上的独立应用程序。

【大模型】基于Hugging Face调用及微调大模型(1)

文章目录 一、前言二、Transformer三、Hugging Face3.1 Hugging Face Dataset3. 2 Hugging Face Tokenizer3.3 Hugging Face Transformer3.4 Hugging Face Accelerate 四、基于Hugging Face调用模型4.1 调用示例4.2 调用流程概述4.2.1 Tokenizer4.2.2 模型的加载4.2.3 模型基本…

spring源码初始学习基础-环境

环境:在这里插入代码片 allprojects {repositories {maven { url file:///D:/software/repository} // 本地仓库地址,如果没有依次向下寻找maven { url "https://maven.aliyun.com/repository/public" }mavenLocal()mavenCentral()}buildscri…

CopilotKit:开源 Copilot 框架,部署应用内 AI 代理,使用 Langchain 自动执行任何任务!

原文链接:(更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号!) CopilotKit:开源 Copilot 框架,部署应用内 AI 代理,使用 Langchain 自动执行任何任务! &am…

前端工程化工具系列(九)—— mddir(v1.1.1):自动生成文件目录结构工具

mddir 是一个基于项目目录结构动态生成 Markdown 格式目录结构的工具,方便开发者在文档中展示文件和文件夹的组织结构。 1. 安装 全局安装改工具,方便用于各个项目。 pnpm i -g mddir2. 使用 在想要生成目录接口的项目内打开命令行工具,输…

RocketMQ教程(一):RocketMQ的基本概念

RocketMQ是什么? RocketMQ 是一个分布式消息中间件和流计算平台,由阿里巴巴团队开源并贡献给 Apache 软件基金会,现为 Apache 顶级项目。它主要用于处理大规模数据的传输问题,支持高吞吐量、高可用性和可扩展性的消息发布和订阅服务。RocketMQ 能够确保消息的可靠传输,支持…

从报名到领证:软考高级【系统分析师】报名考试全攻略

本文共计13156字,预计阅读39分钟。包括七个篇章:报名、准考证打印、备考、考试、成绩查询、证书领取及常见问题。 不想看全文的可以点击目录,找到自己想看的篇章进行阅读。 一、报名篇 报名条件要求: 1.凡遵守中华人民共和国宪…

R语言探索与分析17-股票题目

Value at Risk(VaR)是一种统计技术,用于量化投资组合在正常市场条件下可能遭受的最大潜在损失。它是风险管理和金融领域中一个非常重要的概念。VaR通常以货币单位表示,用于估计在给定的置信水平和特定时间范围内,投资组…

码农危是否到来? AI大模型时代到来程序员能做啥?

前言 “马斯克提到人工智能会让工作变得毫无意义,并建议人们可能需要去编写人工智能程序,以避免被AI剥夺就业”,AI大模型的爆发,各种自动化编码应用工具,AI机器人出现,“前有2023年2月份,ChatG…

基于FPGA的任意点滑动平均(滑动窗长度和数据位宽参数化,例化时参数可设置)

目录 1.前言2.原理3.举例说明4.Matlab实现5.FPGA实现滑动平均 微信公众号获取更多FPGA相关源码: 1.前言 对于一维信号,我们可以使用类似移动平均滤波(Moving Average Filtering)实现denoising。Moving Average Filtering 是一种…

算法金 | 再见!!!KNN

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 KNN算法的工作原理简单直观,易于理解和实现,这使得它在各种应用场景中备受青睐。 我们将深入探讨KNN算法&…

微服务+分库分表的自增主键ID该如何设计?

一. 前言 分布式ID 是分布式系统里面非常重要的一个组成部分,那么我们在设计分布式ID的时候,需要考虑什么问题呢? ❓简单结构下是怎么实现 ID 的控制的? 单实例系统 :通过时间戳,系统内自增,上…

【高校科研前沿】新疆生地所陈亚宁研究员团队在GeoSus发文:在1.5°C和2°C全球升温情景下,中亚地区暴露于极端降水的人口增加

目录 文章简介 1.研究内容 2.相关图件 3.文章引用 文章简介 论文名称:Increased population exposures to extreme precipitation in Central Asia under 1.5 ◦C and 2 ◦C global warming scenarios(在1.5C和2C全球变暖情景下,中亚地区…

flutter LINK : ...fatal error LNK1168: �޷���...

执行 flutter run -d windows 后报错 LINK : fatal error LNK1168: �޷��� E:\xiaoli\flutter_project\huapu_update_hardware\build\windows\x64\runner\Debug\huapu_update_hardware.exe ���…

gstreamer+mpp调用硬解码播放视频

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、cpu解码二、gstreamermpp1.默认已安装2.没安装必要软件 总结 前言 以前一直在MPP上开发硬解码推理,最近想弄一个盒子支持调用mpp硬解码播放视频…

OZON快蜗牛数据工具,OZON数据分析工具

在当今的电商时代,数据已经成为了商家们最宝贵的资产之一。无论是产品选品、市场定位,还是营销策略的制定,都离不开对数据的深入分析和精准把握。而在众多电商平台中,OZON以其独特的商业模式和庞大的用户群体,吸引了众…