2、mysql性能监控performance_schema

基础层次

image
聊到mysql时候,首先要知道mysql的一个层次,

  1. 客户端
  2. server
  3. 存储引擎

首先客户端要发送请求和服务端进行连接,所有先有个连接器,会有一些认证,比如用户名和密码的匹配,
第二步,客户端和服务端连接后,要发送一些请求,所以有个分析器。客户端发来的sql语句本质上就是个字符串,所以要进行解析切分,进行语法分析,通过关键字比如from、where。。。
比如有个sql A表join B表,那到底先读A表还是B表的数据呢,所以要有个优化器,说明mysql自带的已经有优化了,但这些优化还远不够。优化分为RBO和CBO,

  • RBO:基于规则的优化,比较基础
  • CBO:基于成本基于代价的优化,目前企业中更多的是这种方式的优化

优化好后,接下来是执行器,执行器主要是和存储引擎进行一个挂钩,就是要从磁盘里面获取数据了。
但是取数据不是乱取的,所以我们写sql时候是绝对不许写select *的,归根到底还是IO问题,IO从硬件层面无法避免的,所以要减少IO的量或者减少IO的次数,但不管怎么样,我们是想要尽量少的从磁盘里读取数据。
在mysql8版本之前,还有的东西叫查询缓存,不过在mysql8之后就被废弃了,因为在我们在使用关系型数据库时候,数据的变更是非常频繁的,如果一些常量枚举的数据可以放在缓存里,但如果是经常变更的数据,就不要放进去了,所以就把查询缓存剔除掉了。

总结:
image

性能监控

如图:
image
进入mysql命令行,随便写个sql查询一个表,这个sql执行的很快,可以看到(0.00 sec),难道是执行这条sql没有一点的耗时吗?肯定不可能。
我们可以设置set profiling=1;
设置成功后,可以使用命令:

show profiles;

可以看到执行的sql具体耗时
image
除此之外,还可以执行

show profile;

可以看到具体的在哪些阶段耗时多少
image
如图可以看到主要是在starting准备数据时候和Sending data 发送数据时候耗时较多。

上面只是执行了一个sql,如果是执行了多个sql,再去执行show profiles; 就会显示所有执行过的sql
image
既然显示了所有执行过的sql,如果还是只执行show profile;,就显示只有最后一条执行过的sql的具体执行耗时
image
如果想看哪一个sql具体耗时,通过第一列的Query_ID来查看,比如查看第2个sql执行耗时

show profile for query 2;

执行后显示:
image

如果光看以上的还不够,还可以加一些属性来查看
官网显示:
image
比如查看CPU:

show profile cpu;

image
可以通过列字段看到用户使用cpu和系统使用cpu的时间参数值
如果想看更具体的,可以执行show profile all; 自己试试。

Performance Schema

mysql官网说:在后期的mysql高版本中会废弃掉通过设置set profiling=1;然后查看sql的执行效率,而是通过Performance Schema
执行mysql命令:

show databases;

image
可以看到有个preformance_schema数据库
然后使用这个数据库use preformance_schema;
查看里面的表show tables;,可以查看到里面的87个表。
看到这么多表不要慌,根据官网提供的说明来使用它:
image

如果之前没有做过设置的话,默认是开启的,如果要手动关闭,必须要打开mysql的一个配置文件,在目录vi /etc/my.cnf文件中进行修改

通过show create table setup_consumers;来查看创建表的时候的表结构
image

performance_schema库下的表可以按照监视不同的纬度就行分组分类。

Performance Schema 默认是开启的,但是里面具体的值并不是默认开启的,查看:

select * from setup_instruments;

可以看到很多属性是否开启,属性非常多,其中有两列

  • ENABLED 表示属性监控是否开启
  • TIMED 表示计时器是否开启

通过查询events_waits_current表来得知当前server正在做什么

select * from events_waits_current\G

该表中每个线程只包含一行数据,用于显示每个线程的最新监视事件

具体的Performance Schema详细介绍和操作参考:https://www.cnblogs.com/abiu/p/16894713.html

posted @ 2022-11-25 15:17  aBiu--  阅读(118)  评论(0编辑  收藏  举报