• mysql监控sql执行情况


    要想进阶针对mysql学习乃至掌握mysql调优的基本技能,监控mysql的执行情况必不可少。就像我们的代码,如果不能debug,想要进行调优排错,难度将会大大增加。

    所以今天我们就来讲解如何监控mysql的sql执行情况

    什么是show profile?

    show profile是mysql提供的用来分析当前会话中sql语句执行的资源消耗情况,利用它我们可以用来分析sql的性能,作为调优的测量工具

    show profile默认是关闭的,可以通过set profiling=1;指令来开启,但是需要注意的是每次开启只是生效在当前会话中,想要永久生效的话需要修改mysql配置文件

    如何使用show profile?

    1. 首先开启show profile,mysql中执行指令
    1|set profiling=1;
    
    • 1
    1. 我们运行一段测试的sql
    1|select * from user_test.user where id in (select id from user_test.food);
    
    • 1
    1. 执行show profiles; 查询最近执行的sql的情况
      在这里插入图片描述
      如上图所示,我们可以看到,我们刚刚执行的这条sql的执行时间为0.00054s,queryId为243
    2. 那么我们还可以通过这个queryId进阶监控这个sql的其他资源消耗情况,比如查询其CPU的消耗情况
    1|show profile CPU for query 243;![在这里插入图片描述](https://img-blog.csdnimg.cn/93b35d2337d941b4a7878093ef45d1e6.png)
    
    • 1

    其中status表示的是sql指定的各个阶段的状态,duration表示的是各个状态的耗时,cpu_user表示当前用户占用的cpu,cpu_system表示系统占用的cpu

    结果分析:通过上述结果可知,我们执行的sql的大部分时间消耗在启动上,其次消耗在打开table,真正花在执行上的时间只有0.000061s

    除了上述演示的监控cpu的资源消耗,show profile还提供了如下的监控类型
    在这里插入图片描述
    指令格式:

    1|show profile [type] [for query query_id]
    
    • 1

    show processlist 监控连接线程数

    show processlist指令可以查询到mysql当前的连接线程,以此来监控mysql是否有大量线程数连接,从而进行排查

    1|show processlist
    
    • 1

    执行结果
    在这里插入图片描述

    last_query_cost 监控数据页

    last_query_cost指令用于查询最近一次查询需要查找多少个数据页。mysql中是以数据页为单位来存储数据的,查找的数据页越多,IO越高,性能越差

    1|show status like 'last_query_cost';
    
    • 1

    执行结果
    在这里插入图片描述

  • 相关阅读:
    玩转视图变量,轻松实现动态可视化数据分析
    SAP abap json序列化
    nacos注册中心集群
    vue3 + vite项目使用SVG图标
    Go语言代码断行规则详解
    08 SQL优化
    问题:vue2使用watch监视对象属性,但是这个监视只执行了第一次,后面就没反应了
    切换挂载盘
    Python爬虫速成之路(3):下载图片
    21天学习挑战赛--第四天打卡(横竖屏切换)
  • 原文地址:https://blog.csdn.net/weixin_42274846/article/details/128165392