1、介绍

Query Profiler是MySQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的硬件性能瓶颈在什么地方。

通常我们是使用的explain,以及slow query log都无法做到精确分析,但是QueryProfiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MySQL 5.0.37以及以上版本中才有实现。

默认的情况下,MYSQL的该功能没有打开,需要自己手动启动。

2、开启Profile功能

Profile 功能由MySQL会话变量 : profiling控制,默认是OFF关闭状态。查看是否开启了Profile功能:

select @@profiling; 
-- 或者
show variables like '%profil%';

properties 文件 mysql url mysql profile详解_MySQL

开启profile功能 

set profiling=1; --1是开启、0是关闭

 3、语句使用

show profile 和 show profiles 语句可以展示当前会话(退出session后,profiling重置为0) 中执行语句的资源使用情况.

show  profiles  :以列表形式显示最近发送到服务器上执行的语句的资源使用情况.显示的记录数由变量:profiling_history_size 控制,默认15条

properties 文件 mysql url mysql profile详解_MySQL_02

 

show profile: 展示最近一条语句执行的详细资源占用信息,默认显示 Status和Duration两列

properties 文件 mysql url mysql profile详解_mysql_03

show profile 还可根据 show profiles 列表中的 Query_ID ,选择显示某条记录的性能分析信息

properties 文件 mysql url mysql profile详解_mysql_04

 

type是可选的,取值范围可以如下:

ALL 显示所有性能信息

BLOCK IO 显示块

IO操作的次数

CONTEXT SWITCHES 显示上下文切换次数,不管是主动还是被动

CPU 显示用户CPU时间、系统CPU时间

IPC 显示发送和接收的消息数量MEMORY [暂未实现]

PAGE FAULTS 显示页错误数量

SOURCE 显示源码中的函数名称与位置

SWAPS 显示SWAP的次数

4、示例

查看是否打开了性能分析功能

select @@profiling;

properties 文件 mysql url mysql profile详解_SQL_05

 打开 profiling 功能

set profiling=1;

properties 文件 mysql url mysql profile详解_MySQL_06

 执行sql语句 

 

properties 文件 mysql url mysql profile详解_数据库_07

执行 show profiles 查看分析列表

properties 文件 mysql url mysql profile详解_MySQL_08

 查询第二条语句的执行情况

show profile for query 2;

properties 文件 mysql url mysql profile详解_MySQL_09

 可指定资源类型查询

show profile cpu,swaps for query 2;

properties 文件 mysql url mysql profile详解_database_10

 

5. 应注意的结论 

properties 文件 mysql url mysql profile详解_数据库_11

properties 文件 mysql url mysql profile详解_SQL_12

 

converting HEAP to MyISAM 查询结果太大,内存不够用往磁盘上搬; Creating tmp table 创建临时表:拷贝数据到临时表,用完再删除; Copying to tmp table on disk 把内存临时表复制到磁盘,危险。

如果您觉得文章好看,欢迎点赞收藏加关注,一连三击呀,您的肯定是我持续输出的动力,感谢!!☺☻