MySQL show profile

MySQL show profile,第1张

1. 是什么?

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

2. 查看状态:

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

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

3. 开启功能:

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

4. 运行sql:

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

5. show profile:

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

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

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

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

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

6. 全局查询日志:

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

启用方式有两种:

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

mysql提供可以用来分析当前会话中语句执行的资源消耗的情况,可以用于SQL的调优的测量

默认情况下,参数处于关闭状态,保存最近15次的运行结果

分析步骤

1、查看当前版本是否支持

show variables like 'profiling'

2、开启功能

set profiling =on

3、运行SQL

4、执行

show profiles

可以看到每条SQL的执行耗时情况

5、诊断SQL

show profile cpu,block io for query [ 查询ID号]

show profile cpu,block io for query 10

ALL   所有的开销信息

BLOCK IO   块IO相关开销

CONTEXT SWITCHES   上下文切换次数开销,被动和主动

CPU   CPU相关开销信息

IPC  发送和接受相关开销信息

MEMORY  内存相关开销信息

PAGE FAULTS   页面错误相关开销信息

SOURCE    Source_function,Source_file,Source_line相关的开销信息

SWAPS  交换次数相关开销的信息

需要注意

concerting HELP to MyISAM  查询结果太大,内存都不够用了往磁盘上搬了

Creating tmp table 创建临时表  拷贝数据到临时表,用完再删除

Copying to tmp table on disk 把内存中临时表复制到磁盘

show profile是由Jeremy

Cole捐献给MySQL社区版本的。

默认的是关闭的,但是会话级别可以开启这个功能。

开启它可以让MySQL收集在执行语句的时候所使用的资源。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8542233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存