MySQL高级知识(十二)——Show Profile

MySQL高级知识(十二)——Show Profile

  • 1. Show Profile是什么
  • 2. 分析步骤
    • 2.1. 查看当前mysql版本是否支持
    • 2.2. 开启功能
    • 2.3. 运行sql
    • 2.4. 查看结果,show profiles
    • 2.5. 诊断sql
    • 2.6. show profile的常用参数
    • 2.7. 日常开发需要注意的点
  • 3. 总结

此博客的内容主要来源于尚硅谷的视频中,在此记录,以备以后自己查看。

1. Show Profile是什么

Show Profile是mysql提供的可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量。可去官网查看。默认情况下,参数处于关闭状态,并保存最近的15次的运行结果。

2. 分析步骤

2.1. 查看当前mysql版本是否支持

show variables like 'profiling';

MySQL高级知识(十二)——Show Profile_第1张图片
默认情况下是关闭的,使用前需要开启。

2.2. 开启功能

set profiling=1;
show variables like 'profiling';

MySQL高级知识(十二)——Show Profile_第2张图片

2.3. 运行sql

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

MySQL高级知识(十二)——Show Profile_第3张图片

若出现ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘company.emp.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by问题:
解决方案:

set sql_mode= 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

2.4. 查看结果,show profiles

show profiles;

在这里插入图片描述

2.5. 诊断sql

show profile cpu,block io for query Query_ID;/*Query_ID为#3步骤中show profiles列表中的Query_ID*/

MySQL高级知识(十二)——Show Profile_第4张图片

2.6. show profile的常用参数

  • ALL --显示所有的开销信息

  • BLOCK IO --显示块IO相关开销

  • CONTEXT SWITCHES --上下文切换相关开销

  • CPU --显示CPU相关开销信息

  • IPC --显示发送和接收相关开销信息

  • MEMORY --显示内存相关开销信息

  • PAGE FAULTS --显示页面错误相关开销信息

  • SOURCE --显示和Source_function,Source_file,Source_line相关的开销信息

  • SWAPS --显示交换次数相关开销的信息

2.7. 日常开发需要注意的点

  1. convertimg HEAP to MyISAM:查询结果太大,内存不够,数据往磁盘上面搬移了。

  2. Creating tmp table:创建临时表。先拷贝数据到临时表,用完后再删除临时表。

  3. Copying to tmp table on disk:把内存中临时表复制到磁盘上,危险!!!

  4. locked

如果在show profile诊断结果中出现了以上4条结果中的任何一条,则sql语句需要优化。

3. 总结

  1. show profile默认是关闭的,并且开启后只存活于当前会话,也就说每次使用前都需要开启。

  2. 通过show profiles查看sql语句的耗时时间,然后通过show profile命令对耗时时间长的sql语句进行诊断。

  3. 注意show profile诊断结果中出现相关字段的含义,判断是否需要优化sql语句。

  4. 可更多的关注MySQL官方文档,获取更多的知识。

你可能感兴趣的:(MySQL,Show,Profile,MySQL高级)