MySQL 8.0 资源组新特性如何详细解读?

2026-05-23 22:290阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计907个文字,预计阅读时间需要4分钟。

MySQL 8.0 资源组新特性如何详细解读?

作者:杨波波

在MySQL 8.0之前,我们可能会遇到一条SQL语句,如:`mysqlselect * from t1 order by rand();` 当多个线程同时执行此语句时,会导致CPU被跑满,其他请求只能被阻塞。这种情况该如何解决呢?大致方法如下:

作者:杨涛涛


在MySQL 8.0 之前, 我们假设一下有一条烂SQL,

mysqlselect * from t1 order by rand() ;

以多个线程在跑,导致CPU被跑满了,其他的请求只能被阻塞进不来。那这种情况怎么办?

大概有以下几种解决办法:

  • 设置max_execution_time 来阻止太长的读SQL。那可能存在的问题是会把所有长SQL都给KILL 掉。有些必须要执行很长时间的也会被误杀。
  • 自己写个脚本检测这类语句,比如order by rand(), 超过一定时间用Kill query thread_id 给杀掉。
  • 那能不能不要杀掉而让他正常运行,但是又不影响其他的请求呢?

    那mysql 8.0 引入的资源组(resource group,后面简写微RG)可以基本上解决这类问题。

    比如我可以用 RG 来在SQL层面给他限制在特定的一个CPU核上,这样我就不管他,让他继续运行,如果有新的此类语句,让他排队好了。

    为什么说基本呢?目前只能绑定CPU资源,其他的暂时不行。

    那我来演示下如何使用RG。

    阅读全文

    本文共计907个文字,预计阅读时间需要4分钟。

    MySQL 8.0 资源组新特性如何详细解读?

    作者:杨波波

    在MySQL 8.0之前,我们可能会遇到一条SQL语句,如:`mysqlselect * from t1 order by rand();` 当多个线程同时执行此语句时,会导致CPU被跑满,其他请求只能被阻塞。这种情况该如何解决呢?大致方法如下:

    作者:杨涛涛


    在MySQL 8.0 之前, 我们假设一下有一条烂SQL,

    mysqlselect * from t1 order by rand() ;

    以多个线程在跑,导致CPU被跑满了,其他的请求只能被阻塞进不来。那这种情况怎么办?

    大概有以下几种解决办法:

  • 设置max_execution_time 来阻止太长的读SQL。那可能存在的问题是会把所有长SQL都给KILL 掉。有些必须要执行很长时间的也会被误杀。
  • 自己写个脚本检测这类语句,比如order by rand(), 超过一定时间用Kill query thread_id 给杀掉。
  • 那能不能不要杀掉而让他正常运行,但是又不影响其他的请求呢?

    那mysql 8.0 引入的资源组(resource group,后面简写微RG)可以基本上解决这类问题。

    比如我可以用 RG 来在SQL层面给他限制在特定的一个CPU核上,这样我就不管他,让他继续运行,如果有新的此类语句,让他排队好了。

    为什么说基本呢?目前只能绑定CPU资源,其他的暂时不行。

    那我来演示下如何使用RG。

    阅读全文