show profile是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,可以帮助进行SQL问题的诊断。
查看配置
可以使用命令set global profiling=ON
进行临时开启,如果需要永久生效则在MySQL的配置文件中进行配置。
show profiles查看最近SQL
用来查看最近15条SQL,如下所示主要有Query_ID、Duration以及Query三项。其中Query_ID将在下面详细分析时使用。Duration则表示该条语句执行的时间。
查看SQL详细情况
选项注释
选项 | 说明 |
ALL | 显示所有的开销信息 |
BLOCK IO | 显示块IO相关开销 |
CPU | 显示CPU相关开销信息 |
CONTEXT SWITCHES | 上下文切换相关开销 |
IPC | 显示发送和接收相关开销信息 |
MEMORY | 显示内存相关开销信息 |
PAGE FAULTS | 显示页面错误相关开销信息 |
SOURCE | 显示和source_function,source_file,source_line相关的开销信息 |
SWAPS | 显示交换次数相关开销的信息 |
几个雷区
即当你从上面详细跟踪中看到下面几个,要特别注意。
convertiong heap to myisam :查询结果太大,内存不够用。
creating tmp table : 创建临时表(拷贝数据到临时表,用完临时表后删除临时表)。
copying to tmp table on disk : 把内存中临时表复制到磁盘–这是一个危险的动作。
locked : 无需多言,锁的时间比较长