00:00
讲这个慢SQ啊,嗯,之前呢,我们讲解的是那个PTQ,那么通过这个把把那个慢SQ给杀掉,来解决这个数据库性能问题,那比如说你现在呢,呃,在一家新新的公司入职,那么这时候呢,你有很多慢斯克,其实你你不太敢杀,万一你杀了以后自己可能会出现,嗯,会出现一些那一些不必要的麻烦什么的,那这个时候呢。你就可以利用这个目前这个MYSQL8.0,它有一个资源组这个功能,这资源那个资源组呢,就相当于是就是一个资源隔离,那么它呢,是可以把这个慢SQL啊绑定在某一个CPU上。那比如说现在,嗯,你们那CPU有16核,那么呢,绑定到最后一个核上,那么呢,就是说其他的15核正常的去,呃给业务的circle,正常的circleq去做一些读取写入,那那些慢circleq呢,会绑定到这个最后一个核。
01:05
那这样呢,其实就是有效的缓解了你这个第一个是CPU这个资源啊利用率,那第二呢,那CPU往下降了,那你那个那个连接数啊,啊那个都是不会升高的,这样呢就可以避免了你这个性能这个问题,那我这里呢,是通过一个脚本把这些买SQL8.0这个组符,呃,这个资源组这些东西啊,它有一系列那个circleq啊。我给我给他看一眼。这些是一个资源组,你看它命令还是比较多的,这些都是需要你手工的去设置,但是当你出现故障的时候呢,你希望一种以一种更快速的方式去解决,那么其实呢,我这里呢,是通过这个工具啊,我是用PP写的,呃,相当于给你那个做了一个呃一个呃快速的一个处理的一个功能。
02:03
啊。那这里呢,其实是给大家这堂课呢,是给大家演示一下。啊,我这个这个工具是怎么去使用的。那我这里,我们现在这,嗯,这里呢,就是先呢。咱们先造一个慢circle啊,让它这个sla不停的去加一啊,这里呢是啊1800秒啊,也一直的会s select去加一,这样呢,它会造成一个CPU很高。那这里呢?啊,我这里是创建一个存储过程啊。咱们现在这堂课呢,就是给大家先演示一下啊。这个东西怎么怎么怎么用的啊。那我现在在这个太子库呢,有一个存储,有一个存储过程啊啊。
03:02
啊,这个呢,就是我之前创建的一个存储过程啊,这个我之前已经创建好了啊。咱们呢,先手工先执行一下,先看看这效果啊。啊,这个现在目前我的CPU都是正常的啊,你看没有啊。啊,我当我执行以后。你可以看这个CPU。你看马上他这个CPU这个利用率你看就升高了。嗯,你看是吧,这个已经被打到100了。啊,现在是总共是197。啊,我们可以看一眼这个。看一下这个状态,买他的状态。啊,你看他现在正在执行这个存储过程。那这时候呢,我们呢,就通过我这个工具,我这个是给你封装好了的,那你就不需要再创建,你看这些是嗯,最新的一些SQ啊,你就不用再执行这些东西了啊,其实到时候你。
04:11
遇到问题的时候,其实没有时间去执行,一个一个去执行的,你需要一个封装的一个工具来快速去执行定位,那么我们呢,先来看一眼。啊。啊,就通过这个工具,那我这个工具呢,前提呢,你还是先需要把这个环境给准备好了,如果你要是sent sent OST呢,你这里呢,就加一个ND,你要是没没你要是六呢,你直接就去掉就行了,那我这里其实已经装完了,然后呢,我们就需要改一下这个。把你那个主题啊信息给填进去,用户名密码啊,这端口号库名啊,这个是。
05:04
啊三这个是代表了三秒,就是说当。嗯,三秒以上呢,就会认定为这个慢S,然后给它绑定到CPU最后一个核上啊,这个就是这么个意思啊,我先给大家演示一下啊。我这再开一个吧。再开一窗口。然后我这边呢,我啊我一直在。这不跑完了吗?嗯,先等等啊,他可能现在有缓存,我先把数据库给重启一下啊。我们主要来看一眼这个工具,这个资源组,它是干什么用的。我先把这个数据库先启动一下。然后让他再跑一下。
06:13
好,我先把数据我给重启了啊,现在没有啊,我干脆我就直接啊,我执行一这个这是用Python写的这个脚本跟那个是一样的啊,我这里呢是并发32个线程,因为我这CPU是32核的嘛。啊,这个显显示不全啊,总共是32盒。那么呢,我呢,就是干脆直接给打到32个线,32个进程让他看看。把CPU给打满了是什么效果?嗯,我们就直接执行这个就行了,这个也是执行这个存储过程啊,走,我们来看一下CPU啊。你看这时候你看这个CPU已经没没被打到三,基本打满了啊,所有盒都给打满了。
07:00
啊,3000多了都,然后呢,我们现在赶紧哎。跟这儿吧。执行一下,你看现在基本都打满了啊,我们来执行一下我这个脚本。我们待会来,赶紧看CPU。啊,当执行完了以后,你看它这些出现很多卡顿慢circleql,然后呢,它这个时候呢,会把这些慢circle呢,你看这里这里的慢circle的加到一个资源组里的,这样CPU就会往下降了,我们来看啊,你看这CPU现在立马就往下降了。你看是不是不是不是很高了吧,你看刚才都打的负载打的很高了啊,然后呢,我们来看你就直接。哎,杠杠,这是看。啊,这些就是这些信息,这些信息呢,就是执行的是这条命令,查看绑定效果。
08:03
我们可以先来执行一下。相当于就是这些啊,我嗯,大家看这些啊,就是我用PCB封装的,我都给你列好了,这些都是相当于是状态把这些语句呢,绑定到这个资源组里了。你看他现在CPU是往下降了,我们再看一下一,你看基本上是吧,CPU是非常少了,用这个名字再看一眼。你看基本上这个打到最后一个和上了就啊。然后呢?我这里接着看top啊。然后呢,我这里呢,如果呢,你现在想给它关了啊,把这个资源图给关了,那么你就直接就执行这个杠杠stop,杠杠stop相当于就是。运行的这条命令。
09:02
这个关闭资源,资源组是触发了这个我们来看一下啊,给它关了。关完以后呢,你看再看这CPU,你看现在立马又被打爆了是吧,你看现在又开始多了是吧。啊,这个就是资源组的作用,可以减少你这个CPU的利用率,然后呢,我们,哎,你再看一眼啊,我现在又再给它开启啊走。然后你看这CPU一会儿你看呢。你看吧,看见没有,马上它就往下降了。啊,这个就是买SQL8.0的一个核心的一个功能,那记好了,如果你要开启资源组呢,你一定要用这个那个set cp这个命令去开启这个功能啊,需要开启这个功能,那么你可以通过这个啊直接一执行。当出现下面这条反馈的信息以后,就代表你这个CP这个功能已经开启了,如果你执行这条命令是空的,说明是没有开启的,然后切记一定要把这个MYSQL实例要重启一下,就MYSQL进程需要重启一下这个资源组才能正常的生效呢。
10:16
那么我这条这个工具呢,就是给大家演示一下这个整个的一个资源组,我是给你封装好了,就不需要到时候出现问题以后,你需要再手忙脚乱的再去复制粘贴这些,你看这些额外的命令的,到时候你是在故障期间,你是没有时间去弄的,这样呢可以避免大家在生产环境中呢,出现一些BP0的事故啊,其实这个功能现在买SL8.0我认为是比较好的必备两的一些,尤其是你刚入职,你可以不需要把那些MYSQ给他杀掉,因为你杀掉MYSQL呢,有可能你你也有可能会受到一些连带的那些责任什么的,这样反而不太好啊,通过这个资源组呢,你就可以让那个慢SQ慢慢跑,跑到最后一个和上。
11:04
那这样呢,其实呢。等事后呢,你再看。哎,这个slog我会把这个工具呢,会把这个慢都给记录下来,到时候你再跟那个研发啊去进行一些排查,这样呢,你就避免了一些呃事故的发生了啊,这个是资源资源组是很有很有用的一个东西。这里呢,再给大家,我再给他打开,再带大家再看一次啊。我先给关闭资源组啊。哎,这源组现在已经关了,然后你看这CPU立马它就会打起来了,你看又被打满了吧,升高了是吧,然后这里我再给它开启电源组啊回车。你看这CPU一会儿你看往下降了。看是吧,大家降了。那行那个这个工具呢,呃,我把这个工具的源代码呢,是放在这个github上了,然后呢,这个呢。
12:05
呃,测试用例呢,这是模拟是32核,是用Python写的啊,这个你需要先运行这个存储过程,先用运行这个存储过程,然后呢,再执行这个。啊,直接那并发32个进进程去跑。啊,并发这个32个进程,然后去直接做压力测试。啊,那今天呢,就给大家演示了一下,大家可以用我这个工具去去测一下,看看这个效果是怎么样的。啊,再再最后一点,再看一眼吧。关闭。你看这CPU立马就打起来了,对吧。是吧,比如基本上跑满了。那行,那今天这堂课呢,就介绍到这儿了。
我来说两句