专栏首页JavaEEMySQL show profile

MySQL show profile

1. 是什么?

是MySQL提供的可以用来分析当前会话中语句执行的资源消耗情况的工具,可以用于sql调优的测量。默认是处于关闭状态的,会保存最近15次的运行结果。

2. 查看状态:

执行如下命令即可查看profile的状态:

show variables like 'profiling';

执行结果

可以看到,现在是关闭的。

3. 开启功能:

可以执行如下语句将其开启:

set profiling = 'on';

4. 运行sql:

因为上面我们已经开启了profile,所以执行的sql都会被记录到相关文件中,下面我们随便执行几段sql。

select * from emp;
select * from dept;
select * from emp group by id%10 limit 150000;
# order by 5表示按照第五个字段排序
select * from emp group by id%20 order by 5;

5. show profile:

执行了sql之后,来查看show profile的结果:

show profiles;

执行结果

查出来可以看到,执行过的sql这里都有记录,前面有对应的id。然后我们可以根据id,查出该条sql执行时的cpu、io等情况,比如我要查看id为14的这条sql执行情况,那么就执行:

show profile cpu, block io for query 14;

执行结果

可以看到,查出来的结果就涵盖了sql执行过程中的整个生命周期,从校验权限、打开表开始,一直到查询结束,cleaning up。每个过程的cpu和io情况都对应的展示出来了。上面我们查询的字段是cpu和block io,那还有其他的吗?当然有,如下表:

column

description

all

所有的开销信息

block io

块io相关开销信息

context switches

上下文切换相关开销信息

cpu

cpu相关开销信息

ipc

发送和接收相关开销信息

memory

内存相关开销信息

page faults

页面错误相关开销信息

source

source_function,source_file,source_line相关开销信息

swaps

交换次数相关开销信息

查出来之后,我们要怎么知道生命周期中的哪个步骤有猫病呢?主要观察如下四个:

  • converting heap to MyISAM是查询出来的结果集太大,内存不够用
  • creating temp table是创建了临时表,也非常耗时
  • copying to temp table on disk是把内存中的临时表复制到了磁盘中,特别耗时
  • locked是表被锁了

如果查出来的status列包含了上述四个中的一个,都是会拖慢sql的执行速度的。

6. 全局查询日志:

这个主要是用于开发、测试环境用来排查问题的,永远不要中在生产环境中开启此功能,因为日志会非常非常多。

启用方式有两种:

  • 修改my.cnf,添加如下配置:
# 开启
general_log=1
# 日志文件路径
general_log_file=/path/logfile
# 输出格式
log_output=FILE
  • 用sql语句开启:
set global general_log=1;
set global log_output='TABLE';

执行完之后,此后所执行的sql都会保存到mysql库的general_log表里。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL SHOW PROFILE(剖析报告)的查看

    前言:SHOW PROFIL命令是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量。 一、参数的开启和关闭设置 1.1 参...

    joshua317
  • MySQL两表差集最佳实践

    朱明豪
  • MySQL SQL剖析(SQL profile)

        分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和sessio...

    Leshami
  • MySQL怎么查看 SQL 的具体执行成本?

    其实最终的目的只有一个:如何使用性能分析工具定位SQL执行慢的原因?本篇主要是通过 如何使用 SHOW PROFILE 查看 SQL 的具体执行成本

    码农架构
  • MySQL Profile在5.7的简单测试(r10笔记第50天)

    MySQL Profile对于分析执行计划的开销来说,还是有一定的帮助,至少在分析一些性能问题的时候有很多的参考依据。 我在5.6, 5.7版本中进行了测试,没...

    jeanron100
  • 捅破窗户纸-入门MySQL调优之性能监控

    MySQL Server的逻辑架构一般分为三层:服务层(专门为客户端服务)、MySQL Server核心层和存储引擎。

    行百里er
  • mysql中的慢查询日志

    操作系统版本:CentOS Linux release 7.7.1908 (Core)

    用户6715144
  • mysql语句性能开销检测profiling详解

    之前我介绍过msyql查询优化explain检查命令的使用,explain主要是检查sql语句的基本性能,sql是否优秀,但不能查看具体的涉及硬件资源的开销,今...

    Java技术栈
  • Mysql优化中Profiling的使用

    要想优化一条Query,就须要清楚这条Query的性能瓶颈到底在哪里,是消耗的CPU计算太多,还是需要的IO操作太多?要想能够清楚地了解这些信息,可以通过Que...

    dys

扫码关注云+社区

领取腾讯云代金券