社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL8.0功能详解——资源组管理

老叶茶馆 • 6 年前 • 613 次点击  

点击蓝字关注我们


MySQL8.0里包括一款功能——CPU资源分组管理。它实现的目的是将CPU资源分组,并且赋予运行不同类型的查询。通过它可以解决DBA的一些痛点,例如:夜间进行的批处理、大型报表非常耗费资源,为了不影响其它查询的进行,不得不将其放在从服务器上运行。使用资源组管理后,DBA可以将工作分配给限定的CPU核心或者是vCPU。另外,DBA还可以将资源分配给不同的应用,例如分配8个核心给应用A,分配4个核心给应用B,使服务器的资源更加合理的使用。


简单说明一下它的使用过程,首先,需要创建资源组,为每个资源组分配适当的CPU核心数量或者是vCPU。其次,将资源组分配给正在运行查询的线程ID。之后,各个查询就会按照不同的资源组限定的范围运行。

下面详细介绍一下相关的内容:

资源组:资源组包括名称,类型,分配的CPU核心,以及优先顺序。创建资源组时,使用SQL执行CREATE RESOURCE GROUP,例句如图:

资源组的类型分为user和system,system的优先顺序要高于user,system的优先范围在-20到0之间,user的范围在0到19。创建之后,可以通过SELECT * FROM INFORMATION_SCHEMA.RESOURCE_GROUPS来查看资源组的信息。例如:

有没有发现什么问题?这个图是创建资源组之前的信息,vcpu显示的为何是0-0?原因在于我的虚机一开始只有一个vCPU,重新配置虚机后,再看一下:

这次显示0-3,证明我为虚机配置了4个vCPU。看一下创建资源组之后的结果:

线程ID:创建好资源组之后,DBA要做的事情就是将其分配给对应的线程ID。可以通过查询performance_schema.threads来查看线程ID。

然后执行:SET RESOURCE GROUP Batch FOR thread_id;

为执行的查询分配资源组之后,DBA还可以根据实际情况修改资源的分配。执行:

这时我们再看一下资源组的信息:

资源已经重新调配,因此,DBA可以灵活的控制CPU资源为各个应用进行服务。

注意事项:

  • 执行资源组元数据的SQL文不会计入日志,因此MySQL的复制功能不会将其进行复制。

  • 如果使用了线程池插件,资源组功能无法使用。

  • 资源组无法在macOS上使用。

  • 资源组在FreeBSD 和 Solaris上会忽略优先顺序。

  • Linux上也会忽略优先顺序,除非开启CAP_SYS_NICE 功能。


更为详尽的内容请访问“https://dev.mysql.com/doc/refman/8.0/en/resource-groups.html”,希望该功能对您有所帮助。

感谢关注MySQL!

我的新课程《MySQL性能优化》已经在腾讯课堂发布,本课程讲解读几个MySQL性能优化的核心要素:合理利用索引,降低锁影响,提高事务并发度。

目前已有几个录播视频,并且可以回看5-15分钟不等。

下面是报名小程序码,肯定大家推荐给需要的小伙伴们。


下面是本课程内容目录

扫码加入MySQL技术Q群

(群号:793818397)

点“在看”给我一朵小黄花
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55440