在这里插入图片描述

OceanBase数据库是多租户的数据库系统,一个集群内可包含多个相互独立的租户,每个租户提供独立的数据库服务。在OceanBase数据库中,使用资源配置(Unit Config)、资源单元(Unit)和资源池(Resource Pool)三个概念,对各租户的可用资源进行管理。

视频讲解如下

【赵渝强老师】OceanBase租户的资源管理

一、 资源配置与资源单元

一个资源单元中可以包含多个资源配置。资源配置是用来描述每个单元中可用的CPU、内存、存储空间和IOPS等的规格。这里需要注意,资源配置指定的是对应资源单元能够提供的服务能力,而不是资源单元的实时负载。下面展示了创建资源单元的完整语法格式:

CREATE RESOURCE UNIT [IF NOT EXISTS] unit_name
MEMORY_SIZE [=] 'size_value',
MAX_CPU [=] cpu_num,
[MAX_IOPS [=] iops_num,]
[MIN_CPU [=] cpu_num,]
[MIN_IOPS [=] iops_num,]
[IOPS_WEIGHT [=]iopsweight,]
[LOG_DISK_SIZE [=] 'size_value'];

下面的语句将创建一个名叫ru1的资源单元,其中将包含若干个资源配置,如:可以的CPU、内存大小、存储空间等。

ob> create resource unit ru1 max_cpu 1, min_cpu 1, memory_size '2G',log_disk_size '2G' ;# 提示:Meta租户没有独立的Unit,租户资源管理过程中不管理Meta租户。
# 系统在创建租户时默认为Meta租户预留资源,各项资源从用户租户的资源中扣除。
# 目前Meta租户的各项资源采用默认配置,不支持用户指定。

通过DBA_OB_UNIT_CONFIGS视图,可以查看所有资源配置和资源单元信息。

ob> select * from oceanbase.dba_ob_unit_configs \G;# 输出的信息如下:
*************************** 1. row ***************************UNIT_CONFIG_ID: 1NAME: sys_unit_configCREATE_TIME: 2025-04-09 14:50:05.982963MODIFY_TIME: 2025-04-09 14:50:05.982963MAX_CPU: 1MIN_CPU: 1MEMORY_SIZE: 2147483648LOG_DISK_SIZE: 2147483648DATA_DISK_SIZE: NULLMAX_IOPS: 9223372036854775807MIN_IOPS: 9223372036854775807IOPS_WEIGHT: 1MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 1
*************************** 2. row ***************************UNIT_CONFIG_ID: 1001NAME: ru1CREATE_TIME: 2025-04-09 14:56:02.348728MODIFY_TIME: 2025-04-09 14:56:02.348728MAX_CPU: 1MIN_CPU: 1MEMORY_SIZE: 2147483648LOG_DISK_SIZE: 2147483648DATA_DISK_SIZE: NULLMAX_IOPS: 9223372036854775807MIN_IOPS: 9223372036854775807IOPS_WEIGHT: 1MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 1
2 rows in set (0.001 sec)

通过使用alter resource unit语句可以修改资源单元的资源配置,例如:

ob> alter resource unit ru1 memory_size '3G';

《OceanBase数据库课程:MySQ模式》

二、 资源池

资源池由若干个资源单元组成,通过给资源池指定资源配置,可指定资源池下各资源单元的物理资源。下面展示了创建资源池的完整语法格式:

CREATE RESOURCE POOL pool_name
UNIT [=] unit_name,
UNIT_NUM [=] unit_num,
ZONE_LIST [=] ('zone_name' [, 'zone_name' ...]);

在创建资源池之前首先确定集群中的可用区:

ob> use oceanbase;
ob> select zone,status,type from oceanbase.dba_ob_zones;# 输出的信息如下:
+-------+--------+-----------+
| zone  | status | type      |
+-------+--------+-----------+
| zone1 | ACTIVE | ReadWrite |
| zone2 | ACTIVE | ReadWrite |
+-------+--------+-----------+
2 rows in set (0.044 sec)

创建资源池的示例语句如下:

ob> create resource pool rp1 unit 'ru1', unit_num 2, zone_list ('zone1', 'zone2');# 此时将出现下面的错误信息:
ERROR 4656 (HY000): resource pool unit num is bigger than zone server count# 提示:资源池里一个Zone下的Unit的数目大于这个Zone下Server的数量。

执行下面的语句确定每个Zone下的Server数量:

ob> use oceanbase;
ob> select svr_ip,id, zone from dba_ob_servers;# 输出信息如下:
+---------------+------+-------+
| svr_ip        | id   | zone  |
+---------------+------+-------+
| 192.168.79.11 |    1 | zone1 |
| 192.168.79.12 |    3 | zone1 |
| 192.168.79.13 |    2 | zone2 |
+---------------+------+-------+# 提示:此时zone2中只包含一个OBServer。

修改上面的资源池创建语句如下:

ob> create resource pool rp1 unit 'ru1', unit_num 1, zone_list ('zone1', 'zone2');

通过DBA_OB_RESOURCE_POOLS视图,可以查看所有资源池信息。

ob> select * from dba_ob_resource_pools \G;# 输出的信息如下:
*************************** 1. row ***************************
RESOURCE_POOL_ID: 1NAME: sys_poolTENANT_ID: 1CREATE_TIME: 2025-04-09 14:50:06.003151MODIFY_TIME: 2025-04-09 14:50:06.060751UNIT_COUNT: 1UNIT_CONFIG_ID: 1ZONE_LIST: zone1;zone2REPLICA_TYPE: FULL
*************************** 2. row ***************************
RESOURCE_POOL_ID: 1002NAME: rp1TENANT_ID: NULLCREATE_TIME: 2025-04-09 15:12:09.141263MODIFY_TIME: 2025-04-09 15:12:09.141263UNIT_COUNT: 1UNIT_CONFIG_ID: 1002ZONE_LIST: zone1;zone2REPLICA_TYPE: FULL
2 rows in set (0.001 sec)

切换资源池的资源配置可以调整资源池下每个资源单元的资源规格,进而调整租户在该资源池上的资源规格和服务能力。例如:

ob> create resource unit ru2 max_cpu 1, min_cpu 1, memory_size '2G',log_disk_size '2G' ;
ob> alter resource pool rp1 unit 'ru2';# 提示:这里将资源池rp1的资源单元配从ru1切换到了ru2上。

《OceanBase数据库课程:Oracle模式》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916974.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916974.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916974.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8K、AI、低空智联,H.266能否撑起下一代视频通路?

一、📈 爆发式增长的 AI 与视频数据:智能时代的“数据燃料革命” 随着生成式 AI、大模型推理、多模态理解等技术的迅猛发展,视频数据从“记录工具”转变为“感知基础设施”,其在现代智能系统中的战略地位日益凸显。 1️⃣ 视频数…

保姆级别IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)

本文以mysql为例,学会了Mysql,其它的数据库也是类似的模版~如果您觉得这边文章对你有帮助,可以收藏防止找不到~如果您觉得这篇文章不错,也感谢您的点赞对我创作的支持1.1 打开侧边栏的Database2.2 选择要连接的数据库(…

33.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--记账

这篇文章我们一起把记账模块从单体应用迁移到微服务架构中。记账模块的功能想必大家都已经了解了,主要是记录用户的收入和支出,以及对这些记录的删除修改和查询等操作。具体的功能可以参考单体应用专栏,在这里就不多讲了。我们现在一起开始迁…

Cursor结合Playwright MCP Server支持自动化

Cursor结合Playwright MCP Server支持自动化 今天分享一下 playwright MCP Server,其提供了浏览器自动化能力,使大型语言模型能够在真实的浏览器环境中与网页交互, 也可以执行任务,例如运行JavaScript、截屏和导航网页元素&…

Python 求梯形面积的程序(Program to find area of a Trapezoid)

梯形的定义: 梯形是凸四边形,至少有一对边平行。平行边称为梯形的底边,另外两条不平行的边称为梯形的腿。梯形也可以有两对底边。在上图中,CD || AB,它们构成底边,而另外两条边,即AD和BC&#…

C语言 —— 指针(4)

动态内存分配动态内存需要手动申请&#xff0c;手动归还&#xff0c;其内存是开辟在堆区。申请的函数为&#xff1a;void *malloc(size_t size) &#xff08;需包含头文件#include<stdlib.h>&#xff09;size&#xff1a;要分配的内存大小&#xff0c;以字节为单位。申请…

常用算法思想及模板

今天继续整理一些关于算法竞赛中C适用的一些模板以及思想。 保留x位小数 保留x位小数在C语言中可以使用printf中的"%.xf"来实现&#xff0c;但是很多C选手由于关闭了同步流&#xff0c;害怕cin、cout与scanf、printf混用容易出错&#xff0c;所以就给大家介绍一个强…

GitLab 仓库 — 常用的 git 命令

在公司的 gitlab 公共仓库中写代码做项目时&#xff0c;主要涉及以下常用 git 命令&#xff1a;一、单个命令讲解1. 拉取代码&#xff08;1&#xff09;git clone [仓库 URL]‌克隆远程仓库到本地&#xff08;需确保 URL 正确&#xff09; ‌&#xff08;‌2&#xff09;git pu…

【28】C# WinForm入门到精通 ——多文档窗体MDI【属性、方法、实例、源码】【多窗口重叠、水平平铺、垂直平铺、窗体传值】

文章目录1多文档窗体MDI2 基本设置3 实例&#xff1a;多窗口重叠、水平平铺、垂直平铺3.1 主窗口属性设置3.2 主窗口3.3 主窗口窗口添加MenuStrip菜单3.4 添加处理函数3.5 测试效果4 利用窗体参数定义进行传值4.1 在Form2、Form3添加相关控件4.2 Form3 定义函数public Form3(st…

【计算机科学与应用】基于Session欺骗攻击的Web应用程序防护

导读&#xff1a; 本文对Web应用程序开发中的Session欺骗攻击进行了阐述&#xff0c;详细讲解了防范Session欺骗攻击的三种传统方法&#xff0c;并给出了防范代码&#xff0c;分析了三种传统防范方法的不足&#xff0c;新设计了一种通过Referer信息验证来加强对Session欺骗的防…

yolo8+阿里千问图片理解(华为简易版小艺看世界)

✅ 实现目标 按下空格键 → 获取摄像头当前画面&#xff1b; 将图片上传给 大模型 接口&#xff0c;让其“看图说话”&#xff1b; 获取返回描述后&#xff0c;以字幕形式展示在图像画面上&#xff1b; 持续显示识别结果&#xff0c;直到下次按空格。 &#x1f9e0; 需要准…

【ee类保研面试】数学类---线性代数

25保研er&#xff0c;希望将自己的面试复习分享出来&#xff0c;供大家参考 part0—英语类 part1—通信类 part2—信号类 part3—高数类 part100—self项目准备 文章目录线性代数知识点大全**1. 余子式与代数余子式****2. 行列式的含义****3. 矩阵的秩&#xff08;Rank&#xf…

在 Scintilla 中为 Squirrel 语言设置语法解析器的方法

Scintilla 作为一个强大的开源文本编辑控件&#xff0c;通过配置语法解析器&#xff0c;能够对多种编程语言实现语法高亮、代码折叠等实用功能。若要为新语言 Squirrel 设置语法解析器&#xff0c;可参考以下步骤&#xff1a;​创建 Lexer 源文件&#xff1a;Scintilla 通过 Le…

Go语言核心知识点补充

Go语言核心知识点补充 make函数、for循环与输入处理详解 在前几章的内容中&#xff0c;我们介绍了Go语言的基础语法、变量声明、切片、循环等核心概念。但在实际开发中&#xff0c;一些细节性的知识点往往决定了代码的健壮性与效率。 本文将针对前几章涉及到的变量声明与初始化…

AI服务器中,EEPROM有哪些部件使用,需要存储哪些信息?

在AI服务器中&#xff0c;EEPROM&#xff08;电可擦可编程只读存储器&#xff09;主要用于存储关键组件的配置数据、身份信息和校准参数。以下是主要组件及其存储内容&#xff1a; 一、核心组件及存储数据主板&#xff08;Baseboard Management Controller, BMC&#xff09; FR…

It学习资源下载

一.UI 8个高质量UI设计网站&#xff0c;灵感收集必备&#xff01;

Docker Compose :从入门到企业级部署

Docker Compose &#xff1a;从入门到企业级部署1. Docker Compose 核心概念1.1 Compose 架构全景图2. 完整开发工作流2.1 典型开发流程2.2 多服务示例项目结构3. 核心配置详解3.1 服务配置矩阵3.2 网络拓扑示例4. 企业级部署方案4.1 多环境配置管理4.2 扩展部署架构5. 高级技巧…

1.2.vue插值表达式

在 Vue.js 中&#xff0c;插值表达式是用于在模板中显示数据的一种方式。它使用双大括号语法 {{ }} 来包裹需要输出的变量或表达式的值。Vue 会自动将这些表达式的值插入到 HTML 文档中相应的位置。插值表达式基本用法最基本的插值表达式形式就是直接在模板中引用 Vue 实例中的…

Python数据处理基础(学习笔记分享)

Python数据处理入门 常用库学习 numpy NumPy&#xff08;Numerical Python&#xff09; 是 Python 中用于高效数值计算的库&#xff0c;核心是提供一个强大的 ndarray​&#xff08;多维数组&#xff09;对象&#xff0c;类似于 C/C 中的数组&#xff0c;但支持更丰富的操作&a…

力扣面试150题--颠倒二进制位

Day 89 题目描述思路 二进制的算法&#xff0c;将十进制转化为二进制&#xff0c;有一点需要注意&#xff0c;直接采取库函数转化为二进制再反转会出现问题&#xff08;这也是为什么我要补0的原因&#xff09;&#xff0c;因为转化过去不满足32位的二进制&#xff0c;前面不会当…