ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB配置资源管理

YashanDB配置资源管理

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-03-19 18:34:38 0 删除 编辑

YashanDB资源管理通过内置高级包 DBMS_RESOURCE_MANAGER和相关配置参数提供对物理资源的配置能力。

#启用资源管理

#创建资源使用组

调用 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP创建资源使用组。

-- 创建名为LOW_GROUP和HIGH_GROUP的资源使用组,只有SYS用户才有权限执行EXEC DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('LOW_GROUP','CONSUMER GROUP WITH LOW RESOURCE');EXEC DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP('HIGH_GROUP','CONSUMER GROUP WITH HIGH RESOURCE');
Copied!

#创建资源计划

调用 DBMS_RESOURCE_MANAGER.CREATE_PLAN创建资源计划。

-- 创建名为RESPLAN的资源计划,只有SYS用户才有权限执行EXEC DBMS_RESOURCE_MANAGER.CREATE_PLAN('RESPLAN','PLAN FOR RESOURCE TEST');
Copied!

#创建资源计划指令

调用 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE创建资源计划指令。

-- 在RESPLAN资源计划下,为LOW_GROUP资源使用组创建计划指令,该计划指令指定CPU共享份额为50,最大使用上限为10%,用户内存使用上限为20%,会话使用上限为5%EXEC DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE('RESPLAN', 'LOW_GROUP', SHARES => 50, UTILIZATION_LIMIT => 10, SPA_LIMIT => 20, SESSION_SPA_LIMIT => 5);-- 在RESPLAN资源计划下,为HIGH_GROUP资源使用组创建计划指令,该计划指令指定CPU共享份额为100,最大使用上限为100%,用户内存使用上限为50%,会话使用上限为10%,资源使用组中50%的用户内存预留给每个会话EXEC DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE('RESPLAN', 'HIGH_GROUP', SHARES => 100, UTILIZATION_LIMIT => 100, SPA_LIMIT => 50, SESSION_SPA_LIMIT => 10, SPA_LIMIT_RESERVED => 50);
Copied!

#创建用户映射关系

调用 DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING创建用户映射关系。

如果对应用户不存在,请先创建用户,具体操作请查阅 创建用户。

-- 将用户RESMAN1映射到LOW_GROUP资源使用组和用户RESMAN2映射到HIGH_GROUP资源使用组,只有SYS用户才有权限执行EXEC DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RESMAN1','LOW_GROUP');EXEC DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RESMAN2','HIGH_GROUP');
Copied!

#修改相关配置参数

  1. 通过yasboot工具修改 RESOURCE_MANAGER_PLAN参数,以激活资源计划RESPLAN。
# -r参数表示修改失败后回滚集群参数$ yasboot cluster config set -c yashandb -k RESOURCE_MANAGER_PLAN -v RESPLAN -d -r# 可通过如下命令查看RESOURCE_MANAGER_PLAN参数是否已生效于所有节点$ yasboot cluster config show -c yashandb -q RESOURCE_MANAGER_PLAN
Copied!

Note:

RESOURCE_MANAGER_PLAN参数只允许使用 yasboot cluster config set命令修改。

  1. 连接数据库,检查资源计划是否成功激活, RESOURCE_MANAGER_PLAN参数值为RESPLAN表示成功激活资源计划。
show parameter RESOURCE_MANAGER_PLAN;NAME                                                             VALUE---------------------------------------------------------------- ----------------------------------------------------------------RESOURCE_MANAGER_PLAN                                            RESPLAN
Copied!
  1. 通过yasboot工具修改 RSRC_MODE参数开启内存(MEM)或CPU资源管理功能,随后重启数据库使之生效。
# 修改RSRC_MODE参数为ALL,表示同时启用CPU和内存资源管理功能$ yasboot cluster config set -c yashandb -k RSRC_MODE -v ALL -d$ yasboot cluster restart -c yashandb# 可通过如下命令查看RSRC_MODE参数于所有节点中修改结果$ yasboot cluster config show -c yashandb -q RSRC_MODE
Copied!

Note:

RSRC_MODE参数只允许使用 yasboot cluster config set命令修改。

  1. 重启后连接数据库,检查资源管理功能是否成功开启, RSRC_MODE参数值为ALL表示已成功开启。
show parameter RSRC_MODE;NAME                                                             VALUE---------------------------------------------------------------- ----------------------------------------------------------------RSRC_MODE                                                      ALL
Copied!

通过上述示例成功开启资源管理功能后,使用RESMAN1用户连接数据库时会受到资源使用组LOW_GROUP在资源计划RESPLAN下的指令约束。

#修改映射关系

如需更改某个用户映射的资源使用组,需先确保新的资源使用组已存在。下述语句仅为示例,具体参数请查阅 DBMS_RESOURCE_MANAGER相关介绍。

-- 将RESMAN1映射至HIGH_GROUP组中EXEC DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING('USER','RESMAN1','HIGH_GROUP');
Copied!

修改映射关系后,用户新建的会话会归属于新的资源使用组,但已在使用中的会话会继续归属于原有资源使用组直至结束会话。

#配置Cgroups

使用CPU资源管理前,需要先配置Cgroups。

#Cgroups介绍

Cgroups(Control Groups)是Linux内核提供的一种机制,将一系列的任务及其子任务进行集合(或划分)到不同的分组内,并以此限制、记录和隔离不同分组的资源使用情况。

#Cgroups创建

#场景一:暂未安装YashanDB
  1. 在 YashanDB单机部署或 YashanDB分布式部署的 Step1:生成部署文件中,增加 --create-cgroup选项,用于创建cgroup目录。

  2. 执行如下命令,生成具备CPU资源管理功能的部署文件。

# 单机$ yasboot package se gen --cluster yashandb -u yashan -p password --ip 192.168.1.2 --port 22 --install-path /data/yashan/yasdb_home  --data-path /data/yashan/yasdb_data --begin-port 1688 --create-cgroup --sudo-username yashan --sudo-password password# 分布式$ yasboot package de gen --cluster yashandb -u yashan -p password --ip 192.168.1.2 --port 22 --install-path /data/yashan/yasdb_home  --data-path /data/yashan/yasdb_data --begin-port 1688 --create-cgroup --sudo-username yashan --sudo-password password
Copied!

部署完成后,会自动在/etc/rc.local文件中增加一行命令,以便在数据库启动后启用CPU资源管理功能。

#场景二:已安装YashanDB

通过yasboot工具的 host cgroup create 命令创建cgroup目录,详细参数说明请查阅 yasboot host。

$ yasboot host cgroup create --cluster yashandb --sudo-username yashan --sudo-password ssh密码
Copied!

命令执行完成后需重启数据库才能启用CPU资源管理功能。

#监控资源使用

#监控CPU资源使用

YashanDB提供动态视图 V$CPUSTAT、 DV$CPUSTAT和 GV$CPUSTAT监控集群上资源使用组的CPU使用情况。

-- 监控资源使用组LOW_GROUP在所有节点上的CPU使用情况SELECT RESNAME, NR_THROTTLED, THROTTLED_TIME FROM DV$CPUSTAT WHERE RESNAME = 'LOW_GROUP';
Copied!

#监控SPA内存资源使用

YashanDB提供动态视图监控资源使用组和会话的SPA内存使用情况。

#监控资源使用组的SPA内存使用

YashanDB提供动态视图 V$RSRC_CONSUMER_GROUP、 DV$RSRC_CONSUMER_GROUP和 GV$RSRC_CONSUMER_GROUP监控集群上资源使用组的SPA内存使用情况。

-- 监控资源使用组HIGH_GOUP在所有节点上的SPA内存使用情况SELECT SPA_LIMIT_QUOTA, SESSION_SPA_LIMIT_QUOTA, SPA_REMAIN_QUOTA, SPA_MAX_USE_QUOTA, SESSION_SPA_RESERVED_QUOTA, SPA_LIMIT_EXCEED_TIMES, SESSION_SPA_LIMIT_EXCEED_TIMES FROM DV$RSRC_CONSUMER_GROUP WHERE NAME = 'HIGH_GROUP';
Copied!

#监控会话的SPA内存使用

YashanDB提供动态视图 V$SESSION_SPA、 DV$SESSION_SPA和 GV$SESSION_SPA监控集群上会话的SPA内存使用情况。

-- 监控当前会话的SPA内存使用SELECT B.*, A.SPA_USE_MEM, A.SPA_USE_QUOTA, A.RESOURCE_CONSUMER_GROUP FROM V$SESSION A, V$SESSION_SPA B WHERE A.SID = B.SID AND B.SID = USERENV('SID');
Copied!

#监控执行重试

分布式部署形态下,可以通过如下语句监控执行的重试情况。

-- 监控分布式集群下语句的执行重试情况SELECT GROUP_ID,GROUP_NODE_ID,SID,GLOBAL_SESSION_ID,SERIAL#,SPA_USE_MEM,SPA_USE_QUOTA,SPA_MAX_USE_MEM,RESOURCE_CONSUMER_GROUP,EXEC_START_TIME,RETRY_CNT,RETRY_INFO,EXEC_STATUS FROM DV$SESSION WHERE TYPE='USER';
Copied!

#监控并行执行资源使用

YashanDB提供动态视图 V$PX_RES_MGR、 DV$PX_RES_MGR和 GV$PX_RES_MGR监控集群上资源使用组的并行执行资源使用情况。

-- 监控资源使用组HIGH_GROUP在所有节点上的并行执行资源使用情况SELECT GROUP_ID, GROUP_NODE_ID, PX_RES_TYPE, MAX_PX_RES_USAGE, CURR_PX_RES_USAGE FROM DV$PX_RES_MGR WHERE CONSUMER_GROUP = 'HIGH_GROUP'
Copied!

#关闭资源管理

关闭资源管理需要按步骤进行:

  • 如需删除资源使用组,需先删除该资源使用组相关的映射关系和资源计划指令,否则返回错误。
  • 如需删除资源计划,需确保该资源计划不是生效计划且先删除关联到该资源计划的所有资源计划指令,否则返回错误。

#修改相关配置参数

  1. 通过yasboot工具修改 RESOURCE_MANAGER_PLAN参数失效所有资源计划。
$ yasboot cluster config set -c yashandb -k RESOURCE_MANAGER_PLAN -v '' -d -r# 可通过如下命令查看RSRC_MODE参数于所有节点中的修改结果$ yasboot cluster config show -c yashandb -q RESOURCE_MANAGER_PLAN
Copied!
  1. 通过yasboot工具修改 RSRC_MODE参数关闭资源管理功能并重启数据库,待数据库重启后生效。
$ yasboot cluster config set -c yashandb -k RSRC_MODE -v NONE -d$ yasboot cluster restart -c yashandb# 可通过如下命令查看RSRC_MODE参数于所有节点中的修改结果$ yasboot cluster config show -c yashandb -q RSRC_MODE
Copied!

#删除用户映射关系

调用 DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING删除用户映射关系。

Note:

  • 删除用户时,该用户的映射关系会被删除。
  • 删除某个用户的映射关系时,该用户会被自动映射至DEFAULT_CONSUMER_GROUP组中。
  • 无法删除系统用户SYS的映射关系。
EXEC DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING('USER','RESMAN1');EXEC DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP_MAPPING('USER','RESMAN2');
Copied!

#删除资源计划指令

调用 DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE删除资源计划指令。

EXEC DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE('RESPLAN','LOW_GROUP');EXEC DBMS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE('RESPLAN','HIGH_GROUP');
Copied!

#删除资源计划

调用 DBMS_RESOURCE_MANAGER.DELETE_PLAN删除资源计划。

如果资源计划仍有其它资源计划指令,将返回错误。

EXEC DBMS_RESOURCE_MANAGER.DELETE_PLAN('RESPLAN');
Copied!

#删除资源使用组

调用 DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP删除资源使用组。

如果资源使用组仍有其它资源使用者,将返回错误。

EXEC DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP('LOW_GROUP');EXEC DBMS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP('HIGH_GROUP');


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3078136/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: YashanDB资源类型
下一篇: YashanDB会话管理
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    640225