MySQL资源组的使用方法
MySQL支持创建和管理资源组,并允许将服务器内运行的线程分配给特定的组,以便线程根据组可用的资源执行。组属性允许控制其资源,以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。
目前,CPU时间是一种可管理的资源,以“虚拟CPU”的概念表示,该概念包括CPU核心、超线程、硬件线程等。服务器在启动时确定有多少虚拟CPU可用,具有适当权限的数据库管理员可以将这些CPU与资源组相关联,并将线程分配给组。
例如,为了管理不需要以高优先级执行的批处理作业的执行,DBA可以创建一个批处理资源组,并根据服务器的繁忙程度调整其优先级。可以启用或禁用组来控制线程是否可分配给它们。
以下部分描述了MySQL中资源组使用的各个方面:
1 资源组元素
这些功能为MySQL中的资源组管理提供了SQL接口:
- SQL语句允许创建、更改和删除资源组,并允许将线程分配给资源组。优化器提示允许将单个语句分配给资源组。
- 资源组权限提供对哪些用户可以执行资源组操作的控制。
- 信息架构RESOURCE_GROUPS表显示有关资源组定义的信息,性能架构线程表显示每个线程的资源组分配。
- 状态变量提供每个管理SQL语句的执行计数。
2 资源组属性
资源组具有定义该组的属性。所有属性都可以在组创建时设置。某些属性在创建时是固定的;其他可以在此后的任何时间进行修改。
这些属性是在创建资源组时定义的,不能修改:
- 每个组都有一个名称。资源组名称是类似于表和列名的标识符,除非它们包含特殊字符或是保留字,否则不需要在SQL语句中引用。组名不区分大小写,最长可达64个字符。
- 每个组都有一个类型,即SYSTEM或USER。资源组类型影响可分配给该组的优先级值的范围,如后所述。该属性以及允许优先级的差异使系统线程能够被识别,从而保护它们免受用户线程对CPU资源的争用。
系统和用户线程对应于性能模式线程表中列出的后台和前台线程。
这些属性是在资源组创建时定义的,此后可以随时修改:
- CPU相关性是资源组可以使用的一组虚拟CPU。亲和性可以是可用CPU的任何非空子集。如果一个组没有关联,它可以使用所有可用的CPU。
- 线程优先级是分配给资源组的线程的执行优先级。优先级值的范围从-20(最高优先级)到19(最低优先级)。系统组和用户组的默认优先级均为0。
允许系统组的优先级高于用户组,确保用户线程的优先级永远不会高于系统线程:
(1)对于系统资源组,允许的优先级范围为-20到0。
(2)对于用户资源组,允许的优先级范围为0到19。
- 每个组都可以启用或禁用,使管理员能够控制线程分配。线程只能分配给已启用的组。
3 资源组管理
默认情况下,有一个系统组和一个用户组,分别命名为SYS_default和USR_default。不能删除这些默认组,也不能修改它们的属性。每个默认组都没有CPU相关性,优先级为0。
新创建的系统线程和用户线程分别分配给SYS_default和USR_default组。
对于用户定义的资源组,所有属性都在组创建时指定。创建组后,可以修改其属性,但名称和类型属性除外。
要创建和管理用户定义的资源组,请使用以下SQL语句:
- CREATE RESOURCE GROUP创建一个新组。
- ALTER RESOURCE GROUP修改现有组。
- DROP RESOURCE GROUP删除现有组。
这些语句需要RESOURCE_GROUP_ADMIN权限。
要管理资源组分配,请使用以下功能:
- SET RESOURCE GROUP将线程分配给一个组。
- RESOURCE_GROUP优化器提示将单个语句分配给一个组。
这些操作需要RESOURCE_GROUP_ADMIN或RESOURCE-GROUP_USER权限。
资源组定义存储在Resource_groups数据字典表中,以便组在服务器重新启动时保持不变。因为resource_groups是数据字典的一部分,所以用户无法直接访问它。使用信息模式Resource_GROUPS表可以获得资源组信息,该表被实现为数据字典表上的视图。
最初,RESOURCE_GROUPS表中有以下行描述默认组:
mysql> SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS\G
*************************** 1. row ***************************RESOURCE_GROUP_NAME: USR_defaultRESOURCE_GROUP_TYPE: USER
RESOURCE_GROUP_ENABLED: 1VCPU_IDS: 0-3THREAD_PRIORITY: 0
*************************** 2. row ***************************RESOURCE_GROUP_NAME: SYS_defaultRESOURCE_GROUP_TYPE: SYSTEM
RESOURCE_GROUP_ENABLED: 1VCPU_IDS: 0-3THREAD_PRIORITY: 0
THREAD_PRIORITY值为0,表示默认优先级。VCPU_IDS值显示了包括所有可用CPU的范围。对于默认组,显示的值因MySQL服务器运行的系统而异。
前面的讨论提到了一个场景,该场景涉及一个名为Batch的资源组来管理不需要高优先级执行的批处理作业的执行。要创建这样一个组,请使用类似以下的语句:
CREATE RESOURCE GROUP BatchTYPE = USERVCPU = 2-3 -- assumes a system with at least 4 CPUsTHREAD_PRIORITY = 10;
要验证资源组是否按预期创建,请检查resource_GROUPS表:
mysql> SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPSWHERE RESOURCE_GROUP_NAME = 'Batch'\G
*************************** 1. row ***************************RESOURCE_GROUP_NAME: BatchRESOURCE_GROUP_TYPE: USER
RESOURCE_GROUP_ENABLED: 1VCPU_IDS: 2-3THREAD_PRIORITY: 10
如果THREAD_PRIORITY值为0而不是10,请检查您的平台或系统配置是否限制了资源组功能;请参阅资源组限制。
要将线程分配给批处理组,请执行以下操作:
SET RESOURCE GROUP Batch FOR thread_id;
此后,命名线程中的语句将使用批处理组资源执行。
如果会话自己的当前线程应该在Batch组中,请在会话中执行以下语句:
SET RESOURCE GROUP Batch;
此后,会话中的语句将使用批处理组资源执行。
要使用Batch组执行单个语句,请使用RESOURCE_group优化器提示:
INSERT /*+ RESOURCE_GROUP(Batch) */ INTO t2 VALUES(2);
分配给批处理组的线程使用其资源执行,可以根据需要进行修改:
- 当系统负载很高时,减少分配给该组的CPU数量,降低其优先级,或者(如图所示)两者兼有:
ALTER RESOURCE GROUP BatchVCPU = 3THREAD_PRIORITY = 19;
- 在系统负载较轻的情况下,增加分配给组的CPU数量,提高其优先级,或(如图所示)两者兼有:
ALTER RESOURCE GROUP BatchVCPU = 0-3THREAD_PRIORITY = 0;
4 资源组复制
资源组管理是发生该管理的服务器的本地管理。资源组SQL语句和对Resource_groups数据字典表的修改不会写入二进制日志,也不会被复制。
5 资源组限制
在某些平台或MySQL服务器配置上,资源组不可用或有限制:
如果安装了线程池插件,则资源组不可用。
资源组在macOS上不可用,macOS不提供将CPU绑定到线程的API。
在FreeBSD和Solaris上,资源组线程优先级被忽略。(实际上,所有线程都以优先级0运行。)尝试更改优先级会导致警告:
mysql> ALTER RESOURCE GROUP abc THREAD_PRIORITY = 10;
Query OK, 0 rows affected, 1 warning (0.18 sec)mysql> SHOW WARNINGS;
+---------+------+-------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------------+
| Warning | 4560 | Attribute thread_priority is ignored (using default value). |
+---------+------+-------------------------------------------------------------+
- 在Linux上,除非设置了CAP_SYS_NICE功能,否则资源组线程优先级将被忽略。向进程授予CAP_SYS_NICE功能将启用一系列特权;咨询http://man7.org/linux/man-pages/man7/capabilities.7.html查看完整列表。启用此功能时请小心。
在使用systemd和内核支持Ambient Capabilities(Linux 4.3或更新版本)的Linux平台上,建议启用CAP_SYS_NICE功能的方法是修改MySQL服务文件并保持mysqld二进制文件不变。要调整MySQL的服务文件,请使用以下过程:
(1)为您的平台运行适当的命令:
a, Oracle Linux、Red Hat和Fedora系统:
$> sudo systemctl edit mysqld
b. SUSE、Ubuntu和Debian系统:
$> sudo systemctl edit mysql
(2)使用编辑器,将以下文本添加到服务文件中:
[Service]
AmbientCapabilities=CAP_SYS_NICE
(3)重新启动MySQL服务
如果不能像刚才描述的那样启用CAP_SYS_NICE功能,可以使用setcap命令手动设置它,指定mysqld可执行文件的路径名(这需要sudo访问权限)。您可以使用getcap检查功能。例如:
$> sudo setcap cap_sys_nice+ep /path/to/mysqld
$> getcap /path/to/mysqld
/path/to/mysqld = cap_sys_nice+ep
作为一项安全措施,将mysqld二进制文件的执行限制为root用户和具有mysql组成员身份的用户:
$> sudo chown root:mysql /path/to/mysqld
$> sudo chmod 0750 /path/to/mysqld
如果需要手动使用setcap,则必须在每次重新安装后进行。
- 在Windows上,线程以五个线程优先级之一运行。资源组线程优先级范围-20到19映射到下表所示的级别。

相关文章:
MySQL资源组的使用方法
MySQL支持创建和管理资源组,并允许将服务器内运行的线程分配给特定的组,以便线程根据组可用的资源执行。组属性允许控制其资源,以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。 目前,CPU时间是一…...
python--实验7 函数(1)
知识点 函数的定义与调用 函数分类:内置函数和自定义函数。函数定义:使用def关键字定义函数,包括函数名、参数列表和函数体。注意: (1)即使该函数不需要接收任何参数,也必须保留一对空的圆括号…...
【力扣】数组中的第K个最大元素
一、题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,…...
WTM的项目中EFCore如何适配人大金仓数据库
一、WTM是什么 WalkingTec.Mvvm框架(简称WTM)最早开发与2013年,基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低,代码风格不统一的问题。2017年9月,将代码移植到了.Net Core上&…...
互联网3.0时代的变革者:华贝甄选大模型创新之道
在当今竞争激烈的商业世界中,华贝甄选犹如一颗璀璨的明星,闪耀着独特的光芒。 华贝甄选始终将技术创新与研发视为发展的核心驱动力。拥有先进的研发团队和一流设施,积极探索人工智能、大数据、区块链等前沿技术,为用户提供高性能…...
Tomcat的安全配置
1、生产环境优化 2、部分漏洞修复 转载自风险评估:Tomcat的安全配置,Tomcat安全基线检查加固-CSDN博客...
[笔记] 卷积 - 01 变速箱需要放置多少个加速度传感器?
1.讨论范围 本帖主要对卷积运算的过程和物理意义进行基本的展开,不涉及具体的验算过程。 最终所要达成的目标是,能够自然地判断某种物理现象或者某个测量目标是否与卷积运算有关,以及如何进行测量,搜集数据,调用三方…...
Maya崩溃闪退常见原因及解决方案
Autodesk Maya 是一款功能强大的 3D 计算机图形程序,被电影、游戏和建筑等各个领域的设计师广泛使用。然而,Maya 就像任何其他软件一样可能会发生崩溃问题。在前文中,小编给大家介绍了3ds Max使用V-Ray渲染时的崩溃闪退解决方案: …...
编码与梦想:我的CSDN创作5周年
五年前的今天,我带着对技术的热爱和对知识的渴望,踏上了CSDN的创作之旅。这个平台对于我来说,不仅仅是一个分享和学习的场所,更是我成长和自我实现的见证。 机缘 记得那时,我正为了一个编程难题而苦恼,偶…...
Vue2 基础十Vuex
代码下载 Vuex 概述 组件之间共享数据的方式: 父组件向子组件传值,是以属性的形式绑定值到子组件(v-bind),然后子组件用属性props接收。子组件向父组件传值,子组件用 $emit() 自定义事件,父组…...
【大模型】驾驭未知领域:LLM如何处理域外或无意义的提示
驾驭未知领域:LLM如何处理域外或无意义的提示 引言一、概念解析1.1 域外提示1.2 无意义提示二、LLM处理策略2.1 上下文推断2.2 缺省回答2.3 模糊处理2.4 求助于常识三、实例对比3.1 域外提示实例3.2 无意义提示实例四、挑战与局限五、未来展望六、结语附录:术语解释与参考资料…...
Docker容器 为MySQL创建新用户和授权
当您需要为 MySQL 数据库创建一个新用户并配置其访问权限时,可以按照以下步骤操作。我将创建一个名为 newuser 的新用户,并为其授予在任何主机上访问所有数据库的权限。 创建新用户和授权步骤: 登录到 MySQL 服务器 首先,使用具有…...
openssh9.8p1更新 修复漏洞(CVE-2024-6387)
2024 年 7 月,互联网公开披露了一个 OpenSSH 的远程代码执行漏洞(CVE-2024-6387)。鉴于该漏洞虽然利用较为困难但危害较大,建议所有使用受影响的企业尽快修复该漏洞。 centos7 为例 yum -y install gcc make openssl-devel zlib…...
超市收银系统源码
今天给大家分享一套线上线下打通的收银系统,安卓/win双端线下收银台,可DIY、多模板的三端线上小程序商城,除此之外ERP进销存管理、商品管理、会员营销都很完善。 重点是系统支持OEM贴牌独立部署和全开源源码,非常适合一些正在寻找…...
word 使用手册
word 文档中如何将下行的指定文字退格到上行中 就像是这样的 编号:111 密码:222 编号:123 密码:321 编号:124 密码:331 变成 编号:111密码:222 编号:123密码࿱…...
vue学习day03-指令修饰符、v-bind对于样式控制的增强、v-model应用于其他表单元素
7、指令修饰符 (1)概念: 通过“.”指明一些指令后缀,不同后缀封装了不同的处理操作->简化代码 (2)按键修饰符 keyup.enter->键盘回车监听 (3)v-model修饰符 v-model.tri…...
JRE、JVM、JDK分别是什么。
JDK JDK的英文全称是Java Development Kit。JDK是用于制作程序和Java应用程序的软件开发环境。JDK 是 Java 开发工具包,它是 Java 开发者用来编写、编译、调试和运行 Java 程序的集合。JDK 包括了 Java 编译器(javac)、Java 运行时环境&…...
台灯护眼是真的吗?台灯怎么选对眼睛好?一文带你读懂!
近视问题,这一现代社会的“视力杀手”,正悄然影响着越来越多的人群,尤其是青少年群体。长时间面对电子屏幕和书本,加上不正确的用眼习惯,使得视力下降成为普遍现象。在此背景下,一款优质的护眼台灯显得尤为…...
【学术会议征稿】第五届计算机工程与智能控制学术会议(ICCEIC 2024)
第五届计算机工程与智能控制学术会议(ICCEIC 2024) 2024 5th International Conference on Computer Engineering and Intelligent Control 第五届计算机工程与智能控制学术会议(ICCEIC 2024)将于2024年10月18日至22日在广州举办࿰…...
【Golang】slice切片
slice Go语言的切片是对数组的抽象。 数组的使用 package mainimport ("fmt" )// 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) {for index, value : range myArray {fmt.Println("index:", index, "value:", value)…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
