您当前的位置: 首页 >  sql

小志的博客

暂无认证

  • 1浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MySQL高级——Show Profile调优测量SQL

小志的博客 发布时间:2021-03-23 22:33:55 ,浏览量:1

目录
    • 一、Show Profile是什么
    • 二、Show Profile分析步骤

一、Show Profile是什么
  • Show Profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量。
  • 官网:http://dev.mysql.com/doc/refman/5.5/en/show-profile.html
  • 默认情况下,参数处于关闭状态,并保存最近15次的运行结果。
二、Show Profile分析步骤

1、是否支持,看看当前的mysql版本是否支持

SHOW VARIABLES LIKE 'profiling';

在这里插入图片描述 2、开启功能,默认是关闭,使用前需要开启

SET profiling=1;

在这里插入图片描述

3、建表及批量导入的数据参考此博文链接

https://wwwxz.blog.csdn.net/article/details/115100498

4、运行SQL

  • 根据emp表的id模10之后,根据余数分组查询的SQL

    #id模10之后根据余数分组查询
    SELECT * FROM emp GROUP BY id%10 LIMIT 5000;
    

    在这里插入图片描述

  • 根据emp表的id模20之后,根据余数分组查询的SQL

    SELECT * FROM emp GROUP BY id%20  ORDER BY 5
    

    在这里插入图片描述

5、查看结果

SHOW PROFILES;

在这里插入图片描述 6、诊断SQL

# 查看cpu和block io ,(n为上一步前面的问题SQL数字号码)
SHOW PROFILE cpu,block io FOR QUERY  n

在这里插入图片描述 注:参数备注

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

7、日常开发需要注意的结论(即出现下面4项中的任何一项,都表示sql语句需要优化)

  • converting HEAP to MyISAM :表示查询结果太大,内存都不够用了往磁盘上搬了。
  • Creating tmp table :表示创建临时表,因为创建临时表需要拷贝数据到临时表,用完再删除,查询较慢
  • Copying to tmp table on disk:表示把内存中临时表复制到磁盘,危险!!!
  • locked:锁定了
关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0445s