MySQL优化工具之Show profiles分析SQL性能

使用show profiles分析SQL性能

分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL刨析。该参数开启后,后续执行的SQL语句都将记录其资源开销,例如IO、上下文切换、CPU、Memory等等。根据这些开销进一步分析SQL瓶颈从而进行优化与调整。

方法/步骤

show profiles是5.0.37之后添加的,如果想使用此功能,确保版本在5.0.37之后。

1.查看数据库版本

SELECT VERSION()

2.查看是否打开profile功能

SHOW VARIABLES LIKE "PRO%";

profiling默认是OFF,需要开启这个功能。
3. 开启profile功能

SET PROFILING = 1;

再次执行SHOW VARIABLES LIKE "PRO%";看到profiling变为ON
4.测试
获取profile的帮助: help profile;

# 1. 执行一条语句
SELECT * FROM CAR ORDER BY ID DESC LIMIT 100;

# 2. 查看当前session中所有的profile
SHOW PROFILES;
SELECT * FROM information_schema.PROFILING;

# 3. 找到Query_ID并执行(显示该语句所有开销)
SHOW PROFILE ALL FOR QUERY 357[QUERY_ID];
SHOW PROFILE CPU,BLOCK IO FOR QUERY 357[QUERY_ID];
......
  1. show profile 的常用查询参数
参数描述
ALL显示所有的开销信息
BLOCK IO显示块IO开销
CONTENT SWITCHES上下文切换开销
CPU显示CPU开销信息
IPC显示发送和接收开销信息
MEMORY显示内存开销信息
PAGE FAULTS显示页面错误开销信息
SOURCE显示和Source_function, Source_file, Source_line相关的开销i信息
SWAPS显示交换次数开销信息
  1. 注意:
  • converting HAMP to MyISAM: 查询结果太大,内存不够,数据往磁盘上放。
  • Creating temp table:创建临时表。先拷贝数据到临时表,用完再删除临时表。
  • Coping to tmp table on disk:把内存中临时表复制到磁盘上,危险!!!
  • locked
    如果在show profile诊断结果中出现以上任意一条,则SQL语句需要优化。
# 查询Query_ID为2的SQL开销,且按最大耗用时间倒序排列
SELECT STATE, SUM(DURATION) AS Total_R,  
ROUND(  
     100 * SUM(DURATION) /  
        (SELECT SUM(DURATION)  
         FROM INFORMATION_SCHEMA.PROFILING  
         WHERE QUERY_ID = @query_id  
     ), 2) AS Pct_R,  
  COUNT(*) AS Calls,  
  SUM(DURATION) / COUNT(*) AS "R/Call"  
FROM INFORMATION_SCHEMA.PROFILING  
WHERE QUERY_ID = @query_id  
GROUP BY STATE  
ORDER BY Total_R DESC;  

相关内容

MySQL优化:https://blog.csdn.net/weixin_43932609/article/details/106156679

=========================================================

人生得意须尽欢,莫使金樽空对月!
__一个热爱说唱的程序员。

=========================================================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像豆芽一样优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值