show profile 是 mysql 提供的可以用来分析当前回话中语句执行的资源消耗情况的工具,提供了比 explain 更加细粒度的 sql 执行计划分析和sql优化;
可以让我们了解到SQL到底慢在哪个环节。
默认情况下,profile 参数处于关闭状态,并保持最近15次的运行结果; 使用步骤
1、首先查看是否支持show profile,如果支持,开启profiling,如下是否支持使用
show variables like 'profiling';
2、开启功能,默认是关闭,使用前需要开启;
set profiling = 1;
3、运行要分析的慢 sql
4、查看结果
show profiles;
最近15条执行的 sql 语句
5、诊断sql, show profile cpu, block io for query 上一步前面的问题sql数字号码;
查看一条sql的完整生命周期
show profile cpu, block io for query 28;
补充: 不仅仅可以查看 cpu, block io , 还可以查看如下类型的信息;
关于show profile的结论
show profile cpu, block io for query 3; 中的 status 中出现以下4种中的一种或几种,则sql执行效率较差,需要优化;
1、converting heap to myisam 查询结果太大, 内存都不够用了,往磁盘上搬;
2、creating tmp table 创建临时表: 拷贝数据到临时表,用完再删除;
3、copying to tmp table on disk, 把内存中临时表复制到磁盘,危险
4、locked :锁住; 总结