加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL8.0的特性资源管理详解

发布时间:2023-08-26 15:03:11 所属栏目:MySql教程 来源:
导读:本文主要给大家介绍MySQL8.0的特点资源管理详解,希望可以给大家补充和更新些知识。

MySQL支持资源组的创建和管理,并允许将云服务器内运行的线程分配给特定组,以便线程根据组可用的资源执行。组属性可以控制
本文主要给大家介绍MySQL8.0的特点资源管理详解,希望可以给大家补充和更新些知识。
 
   MySQL支持资源组的创建和管理,并允许将云服务器内运行的线程分配给特定组,以便线程根据组可用的资源执行。组属性可以控制其资源,以启用或限制组中线程的资源消耗。DBA可以根据不同的工作负载修改这些属性。
 
   目前,CPU时间是可管理的资源,由“ 虚拟CPU ”的概念表示为包括CPU核心,超线程,硬件线程等的术语。服务器在启动时确定可用的虚拟CPU数量,具有适当权限的数据库管理员可以将这些CPU与资源组关联,并将线程分配给组。
 
   例如,要管理不需要以高优先级执行的批处理作业的执行,DBA可以创建 Batch资源组,并根据服务器的繁忙程度向上或向下调整其优先级。(也许分配给该组的批处理作业应该在白天以较低的优先级运行,在夜间以较高的优先级运行。)DBA还可以调整该组可用的CPU集。可以启用或禁用组来控制线程是否可分配给它们。
 
MySQL8.0的特点资源管理详解
 
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映射到这些级别。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章