mysql8.0创建属性_MySQL8.0新特性——资源管理

MySQL8.0——资源管理:

参考官方文档:

https://dev.mysql.com/doc/refman/8.0/en/resource-groups.html

MySQL支持资源组的创建和管理,并允许将服务器内运行的线程分配给特定组,以便线程根据组可用的资源执行。组属性可以控制其资源,以启用或限制组中线程的资源消耗。DBA可以根据不同的工作负载修改这些属性。

目前,CPU时间是可管理的资源,由“ 虚拟CPU ”的概念表示为包括CPU核心,超线程,硬件线程等的术语。服务器在启动时确定可用的虚拟CPU数量,具有适当权限的数据库管理员可以将这些CPU与资源组关联,并将线程分配给组。

例如,要管理不需要以高优先级执行的批处理作业的执行,DBA可以创建 Batch资源组,并根据服务器的繁忙程度向上或向下调整其优先级。(也许分配给该组的批处理作业应该在白天以较低的优先级运行,在夜间以较高的优先级运行。)DBA还可以调整该组可用的CPU集。可以启用或禁用组来控制线程是否可分配给它们。

1、资源组组件:

这些功能为MySQL中的资源组管理提供了SQL接口:

①:SQL语句支持创建,更改和删除资源组,并允许将线程分配给资源组。优化程序提示可以将单个语句分配给资源组。

②:资源组权限可控制哪些用户可以执行资源组操作。

③:该 INFORMATION_SCHEMA.RESOURCE_GROUPS 表公开了有关资源组定义的信息,而Performance Schema threads表显示了每个线程的资源组分配。

④:状态变量为每个管理SQL语句提供执行计数。

2.资源组属性

资源组具有定义组的属性。可以在创建组时设置所有属性。某些属性在创建时被修复; 其他人可以在此后的任何时间修改。

如下属性在资源组创建时定义,无法修改:

①:每个组都有一个名字。资源组名称是表和列名称之类的标识符,除非它们包含特殊字符或保留字,否则无需在SQL语句中引用。组名称不区分大小写,最长可达64个字符。

②:每个组都有一个类型,或者是 SYSTEM或者USER。资源组类型会影响可分配给组的优先级值范围,如稍后所述。此属性与允许的优先级的差异一起使得能够识别系统线程,以便保护它们免于针对用户线程争用CPU资源。

注意:系统和用户线程对应于Performance Schema threads表中列出的后台和前台线程 。

如下这些属性在资源组创建时定义,并且可以在以后的任何时间进行修改:

①:CPU亲缘关系是资源组可以使用的一组虚拟CPU。亲和关系可以是可用CPU的任何非空子集。如果组没有亲和力,则可以使用所有可用的CPU。

②:线程优先级是分配给资源组的线程的执行优先级。优先级值的范围从-20(最高优先级)到19(最低优先级)。系统组和用户组的默认优先级均为0。

③:可以启用或禁用每个组,从而使管理员可以控制线程分配。线程只能分配给已启用的组。

注意:

系统组的优先级高于用户组,确保用户线程的优先级不会高于系统线程:

①:对于系统资源组,允许的优先级范围是-20到0。

②:对于用户资源组,允许的优先级范围是0到19。

3、资源组管理:

默认情况下,有一个系统组和一个用户组,分别名为SYS_default和 USR_default。无法删除这些默认组,并且无法修改其属性。每个默认组都没有CPU关联,优先级为0。

注意:

①:新创建的系统和用户线程分别分配给 SYS_default和 USR_default组。

②:对于用户定义的资源组,将在创建组时分配所有属性。创建组后,可以修改其属性,但名称和类型属性除外。

③:创建和管理资源组需要有:RESOURCE_GROUP_ADMIN权限

--查看mysql默认的组:一个用户组和系统组:mysql> SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS\G

*************************** 1. row ***************************

RESOURCE_GROUP_NAME: USR_default

RESOURCE_GROUP_TYPE: USER

RESOURCE_GROUP_ENABLED: 1

VCPU_IDS: 0-0

THREAD_PRIORITY: 0

*************************** 2. row ***************************

RESOURCE_GROUP_NAME: SYS_default

RESOURCE_GROUP_TYPE: SYSTEM

RESOURCE_GROUP_ENABLED: 1

VCPU_IDS: 0-0

THREAD_PRIORITY: 0

2 rows in set (0.01 sec)

其中:THREAD_PRIORITY值是0,表示默认的优先级; VCPU_IDS值示出了包括所有可用CPU的范围内;对于默认组,显示的值取决于运行MySQL服务器的系统。

例子:创建一个用户资源组:

CREATE RESOURCE GROUP Batch

TYPE = USER

VCPU = 2-3

THREAD_PRIORITY = 10;

mysql> SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS    WHERE RESOURCE_GROUP_NAME = 'Batch'\G   ---查看这个用户资源组

*************************** 1. row ***************************

RESOURCE_GROUP_NAME: Batch

RESOURCE_GROUP_TYPE: USER

RESOURCE_GROUP_ENABLED: 1

VCPU_IDS: 2-3

THREAD_PRIORITY: 10

--:要将线程分配给Batch组,请执行以下操作:

SET RESOURCE GROUP Batch FOR thread_id;

--:如果自己的当前线程应该在 Batch组中,请在会话中执行以下语句:

SET RESOURCE GROUP Batch;

(此后,会话中的语句将使用Batch组资源执行 。)

例子2:要使用Batch组执行单个语句 ,请使用 RESOURCE_GROUP优化程序提示:

INSERT /*+ RESOURCE_GROUP(Batch) */ INTO t2 VALUES(2);

例子3:对于系统高负载的时间,减少分配给组的CPU数量,降低其优先级,或者(如图所示):

ALTER RESOURCE GROUP Batch  VCPU = 3   THREAD_PRIORITY = 19;

例子4:在系统负载较轻的情况下,增加分配给组的CPU数量,提高其优先级,或者(如图所示):

ALTER RESOURCE GROUP Batch  VCPU = 0-3  THREAD_PRIORITY = 0;

4、资源组复制

资源组管理是发生它的服务器的本地管理。资源组SQL语句和对resource_groups数据字典表的修改 不会写入二进制日志,也不会被复制。

5、资源组的限制:

①:如果安装了线程池插件,则资源组不可用。

②:资源组在macOS上不可用,它不提供用于将CPU绑定到线程的API。

③:在FreeBSD和Solaris上,忽略资源组线程优先级。(实际上,所有线程都以优先级0运行。)尝试更改优先级会导致警告:

④:在Linux上,除非CAP_SYS_NICE设置了功能,否则将忽略资源组线程优先级。Linux系统的MySQL软件包安装程序应该设置此功能。对于使用压缩 tar文件二进制分发或从源安装,CAP_SYS_NICE可以使用setcap 命令手动设置该功能,指定mysqld可执行文件的路径名 (这需要 sudo访问)。您可以使用getcap检查功能。例如:

shell> sudo setcap cap_sys_nice+ep ./bin/mysqld

shell> getcap ./bin/mysqld

./bin/mysqld = cap_sys_nice+ep

⑤:在Windows上,线程以五个线程优先级之一运行。资源组线程优先级范围-20到19映射到这些级别。

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

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

相关文章

Ribbon自带负载均衡策略比较

Ribbon自带负载均衡策略比较 策略名策略声明策略描述实现说明BestAvailableRulepublic class BestAvailableRule extends ClientConfigEnabledRoundRobinRule选择一个最小的并发请求的server逐个考察Server,如果Server被tripped了,则忽略,在选…

java byte数组转int数组_Java任意长度byte数组转换为int数组的方法

前言嗯。最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了。撒花。Java的位运算以及byte数组与其他类型数据的转换比c/c感觉麻烦一些。这里简单说明一下byte数组和int的转换吧。总所周知,int…

newcondition java_Java并发Condition接口

全屏java.util.concurrent.locks.Condition接口提供一个线程挂起执行的能力,直到给定的条件为真。 Condition对象必须绑定到Lock,并使用newCondition()方法获取对象。Condition类的方法以下是Condition类中可用的重要方法的列表。序号方法名称描述1publi…

前端学习(2486):$emit

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运行 fn&#xff1b; 例如&#xff1a;子组件&#xff1a; <template><di…

葡萄城报表介绍:B/S 报表软件

葡萄城报表介绍&#xff1a;B/S 报表软件 B/S 报表软件定义 B/S&#xff08;Browser/Server&#xff0c;浏览器/服务器模式&#xff09;也称 B/S 结构&#xff0c;是 WEB 兴起后的一种网络结构模式。B/S 模式是由最开始的 C/S&#xff08;Client/Server&#xff0c;客户机/服务…

java接口与集合_【总结】Java常用集合接口与集合类

目录常见集合接口概述CollectionMapCollection接口Map接口补充内容常见集合接口概述Java中包含许多集合接口。其中比较常见的主要是Collection接口和Map接口&#xff1a;1.1 Collection由单元素组成的集合。其比较常见的直接子接口是List、Set和Queue接口。表1.1 Collection接口…

Hexo自定义页面的方法

原文转自&#xff1a;http://refined-x.com/2017/07/10/Hexo%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A1%B5%E9%9D%A2%E7%9A%84%E6%96%B9%E6%B3%95/ Hexo是静态页博客生成利器&#xff0c;同很多博主一样&#xff0c;前端路上原创技术博客也是使用Hexo生成并托管在Github Page上的&…

java 图形绘制_Java Graphics 图形绘制

Graphics类提供基本绘图方法&#xff0c;Graphics类提供基本的几何图形绘制方法&#xff0c;主要有&#xff1a;画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形、画字符串等。画线段drawLinepublic abstract void drawLine(int x1,int y1,int x2,int y2)在此…

woodcut

http://www.lintcode.com/en/problem/wood-cut/# 二分答案&#xff0c;贪心验证&#xff0c;具有单调性 class Solution { public:/***param L: Given n pieces of wood with length L[i]*param k: An integer*return: The maximum length of the small pieces.*/int woodCut(v…

java web应用程序_如何构建Java Web 应用程序 - Spring Boot?

Spring Framework 是可以帮助 Java 开发人员创建企业级应用程序的开源解决方案。构建在该平台基础之上的较热门项目之一是 Spring Boot&#xff0c;它提供一种简化的方法来创建独立的 Java 应用程序。本教程将逐步讲解如何创建示例 Spring Boot 入门 Web 应用&#xff0c;并将其…

工作59:常见报错

常见报错解决 1. 页面显示没有数据 页面显示没有数据的时候&#xff08;三级联动&#xff09;&#xff0c;注意去mounted里面看一下&#xff0c;获取数据的方法如getAddress()&#xff1b;有没有执行&#xff0c;是否将数据渲染到了页面&#xff1b; 2.404 状态码 第一次&a…

Python基础【day02】:元组和购物车练习的知识点

一、元组 元组其实跟列表差不多&#xff0c;也是存一组数&#xff0c;只不是它一旦创建&#xff0c;便不能再修改&#xff0c;所以又叫只读列表 用途&#xff1a;一般情况下用于自己写的程序能存下数据&#xff0c;但是又希望这些数据不会被改变&#xff0c;比如&#xff1a;数…

python库封装_使用SIP对C库进行Python封装

Python中使用C/C模块有许多工具&#xff0c;大名鼎鼎的有SWIG(英文意思为&#xff1a;豪饮)、SIP(英文意思为&#xff1a;啜饮&#xff0c;小口的喝)&#xff0c;还有 boost.python等。其中SIP是从SWIG发展而来&#xff0c;专为Python调用C/C模块使用的(看SIP的命名就能看出来&…

关于jsp,javascript,php等语言

技术一jsp: java植入html技术二javascript(js)植入html技术三早期php植入html弱类型语言和强类型语言弱类型语言无法实现函数重载&#xff0c;没办法转载于:https://www.cnblogs.com/HangZhe/p/7188353.html

python最简易入门_零基础入门python,用最简单的方式即可入门python,没有那么复杂...

python已经开始被越来越多的人喜欢&#xff0c;其中有很多是从未学习过编程的人&#xff0c;那么&#xff0c;如果是从零开始学python的话&#xff0c;会很难吗&#xff1f;其实从零开始学python并不会很难&#xff0c;最简单的方法&#xff0c;往往最有效果&#xff0c;无论你…