MySQL 高级--优化 —— show profile

1、show profile 是什么

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

官网:http://dev.mysql.com/doc/refman/5.5/en/show-profile.html

2、查看 profile 的开启状态

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

show variables like '%profiling%';  

在这里插入图片描述

3、开启 profiles 的状态

set profiling=1;           ##  开启show profiles

show variables like '%profiling%';  ## 再次确认开启状态

在这里插入图片描述

4、 运行sql

运行几个较复杂、耗时间的sql,以便查看效果。

select * from emp group by id%10 limit 150000;
select * from emp group by id%20 order by 5select * from dept;

5、 查看结果

show profiles;

在这里插入图片描述

6、诊断SQL

show profile cpu,block io for query n ;  ## n为上一步前面的问题SQL数字号码

在这里插入图片描述

type:
	| ALL              --显示所有的开销信息
	| BLOCK IO         --显示块IO相关开销
	| CONTEXT SWITCHES  --上下文切换相关开销
	| CPU              --显示CPU相关开销信息
	| IPC              --显示发送和接收相关开销信息
	| MEMORY           --显示内存相关开销信息
	| PAGE FAULTS      --显示页面错误相关开销信息
	| SOURCE           --显示和Source_function,Source_file,Source_line相关的开销信息
	| SWAPS            --显示交换次数相关开销的信息

下图是网上找的,对某个SQL进行分析时,耗时特别长的。
在这里插入图片描述

7、开发中注意的事项

执行 show profile cpu,block io for query n ; 的结果中,出现下面的情况,则意味着SQL急需优化:

  1. converting HEAP to MyISAM
    查询结果太大,内存都不够用了往磁盘上搬了。
  2. Creating tmp table
    创建临时表,拷贝数据到临时表,用完再删除表。
  3. Copying to tmp table on disk
    把内存中临时表复制到磁盘,危险!
  4. locked
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章