专栏首页「3306 Pai」社区MySQL 8 中新增的资源管理特性

MySQL 8 中新增的资源管理特性

1. 资源管理

MySQL 8 开始支持使用资源组控制系统CPU资源的分配,将服务器内运行的线程分配给特定组,以便线程根据组可用的资源执行。组属性可以控制其资源,包括VCPU的个数和线程的优先级。DBA可以根据不同的工作负载修改这些属性。 默认情况下,有一个系统组和一个用户组,分别名为SYS_default和 USR_default。无法删除这些默认组,并且无法修改其属性。每个默认组都没有CPU关联,优先级为0

2.资源组属性

每个组都有一个名字。资源组名称是表和列名称之类的标识符。组名称不区分大小写,最长可达64个字符。 每个组都有一个类型,或者是 SYSTEM或者USER。对于系统资源组,允许的优先级范围是-20到0,对于用户资源组,允许的优先级范围是0到19。系统组的优先级高于用户组,确保用户线程的优先级不会高于系统线程。 CPU亲缘关系是资源组可以使用的一组虚拟CPU。亲和关系可以是可用CPU的任何非空子集。如果组没有亲和力,则可以使用所有可用的CPU。 线程优先级是分配给资源组的线程的执行优先级。优先级值的范围从-20(最高优先级)到19(最低优先级)。系统组和用户组的默认优先级均为0。 可以启用或禁用每个组,从而使管理员可以控制线程分配。线程只能分配给已启用的组。 前面两个资源组属性创建时定义,其它属性在资源组创建时定义,并且可以在以后的任何时间进行修改。

3.默认资源组

默认资源组有两个:SYS_default和 USR_default组

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-3
       THREAD_PRIORITY: 0
*************************** 2. row ***************************
   RESOURCE_GROUP_NAME: SYS_default
   RESOURCE_GROUP_TYPE: SYSTEM
RESOURCE_GROUP_ENABLED: 1
              VCPU_IDS: 0-3
       THREAD_PRIORITY: 0

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

4.创建资源组

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

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

5.将线程分配给Batch组

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

SET RESOURCE GROUP Batch FOR thread_id;

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

SET RESOURCE GROUP Batch;

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

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

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

6. 修改资源组属性

对于系统高负载的时间,减少分配给组的CPU数量,降低其优先级:

ALTER RESOURCE GROUP Batch  VCPU = 3   THREAD_PRIORITY = 19;

在系统负载较轻的情况下,增加分配给组的CPU数量,提高其优先级:

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

注意:用户线程的优先级范围

mysql> ALTER RESOURCE GROUP Batch  VCPU = 3   THREAD_PRIORITY = -9;
ERROR 3654 (HY000): Invalid thread priority value -9 for User resource group Batch. Allowed range is [0, 19].

激活资源组

ALTER RESOURCE GROUP Batch enable;

7.Linux上设置线程优先级

在Linux上,除非CAP_SYS_NICE设置了功能,否则将忽略资源组线程优先级,也就是THREAD_PRIORITY项将是0。 CAP_SYS_NICE可以使用setcap 命令手动设置该功能,可以使用getcap检查功能。例如:

root@scutech:~#  setcap cap_sys_nice+ep /usr/sbin/mysqld
root@scutech:~# getcap /usr/sbin/mysqld
/usr/sbin/mysqld = cap_sys_nice+ep

或者使用sudo systemctl edit mysql增加下面的内容:

[Service]
AmbientCapabilities=CAP_SYS_NICE

然后重新启动mysql服务

8.Windows上的优先级对应

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

9. 资源组的限制

1. 如果安装了线程池插件,则资源组不可用。 2. 资源组在macOS上不可用,它不提供用于将CPU绑定到线程的API。 3. 在FreeBSD和Solaris上,忽略资源组线程优先级。(实际上,所有线程都以优先级0运行。)尝试更改优先级会导致警告

本文分享自微信公众号 - 3306pai(pai3306),作者:姚远

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • OpenYurt v0.4.0 新特性发布:高效地管理边缘存储资源

    OpenYurt 是由阿里云开源的基于原生 Kubernetes 构建的、业内首个对于 Kubernetes 非侵入式的边缘计算项目,目标是扩展 Kuberne...

    边缘计算
  • 腾讯游戏 DBA 团队的这个动作 被世界开源社区的“大神”点了赞

    2017年10月10日,世界权威数据库管理系统之一的 MariaDB 的 10.3.2 Alpha版本发布,在版本更新介绍里,出现了这么两行字...

    腾讯游戏DBA团队
  • MySQL 8.0 版本功能变更介绍

    作者介绍:朱强,腾讯云数据库高级工程师,主要负责腾讯云数据库MySQL的开发和运营,曾就职于华为和网宿,在存储、文件系统开发有丰富经验。

    腾讯云数据库 TencentDB
  • 容器集群支持数据库实践

    京东容器数据库系统,管理1800台物理计算节点,生产1W+ 多MySQL Docker容器实例。架构简单可靠,Docker容器计算平台与MySQL集群管理平台解...

    CSDN技术头条
  • MySQL8.0新特性集锦

    在8.0版本之前,默认字符集为latin1,utf8指向的是utf8mb3,8.0版本默认字符集为utf8mb4,utf8默认指向的也是utf8mb4。

    MySQL技术
  • InPanel Linux 服务器管理面板

    安装完成后请设置管理员用户名和密码,如果直接回车,则使用默认的用户名 admin 和密码 admin 。 设置完后,打开给定的链接地址即可访问您的 InPan...

    Inkedus
  • 「3306π」帮你总结MySQL学习资源

    道路千万条,学习第一条;资源找不到,学生两行泪。MySQL属于开源产品,各种周边组件更是数不胜数。本文将介绍由3306π社区汇总的免费学习资源。

    田帅萌
  • 超越官方版本的MySQL8.0来了

    7月8日,拥有60+全新特性,性能全面超越官方版本的腾讯云MySQL 8.0正式发布。在全新引擎的驱动下,腾讯云MySQL8.0数据库通过优化锁系统,事务系统...

    腾讯云数据库 TencentDB
  • MySQL性能基准测试对比:5.7 VS 8.0

    版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于severalnines英文官网,若转载请注明出处。翻译目的在于传递更多全球最新数据库领域相关信息,...

    腾讯云数据库 TencentDB

扫码关注云+社区

领取腾讯云代金券