MySQL 高级部分 —— show profile 分析 sql 效率【 profiling 命令】

学习笔记 马富天 2019-04-16 18:48:17 80 1

【摘要】很多时候我们需要对 sql 语句进行优化,就常常需要分析 sql 语句的执行效率,本文的话介绍 MySQL 的高级部分,使用 show profile 来对执行的 sql 进行分析。

profiling 命令是 MySQL 提供给用户分析当前会话中 sql 语句执行的资源消耗情况的诊断工具,主要用于 sql 语句的性能调优。

profiling 是在 MySQL 5.0.37 及之后版本添加的,首先查询版本方法:

  1. mysql> select version();
  2. +-----------+
  3. | version() |
  4. +-----------+
  5. | 5.6.17    |
  6. +-----------+
  7. 1 row in set (0.00 sec)

在默认情况下 profiling 是关闭的,查询 profiling 的状态:

  1. mysql> show variables like "pro%";
  2. +------------------------+-------+
  3. | Variable_name          | Value |
  4. +------------------------+-------+
  5. | profiling              | OFF   |
  6. | profiling_history_size | 15    |
  7. | protocol_version       | 10    |
  8. | proxy_user             |       |
  9. +------------------------+-------+
  10. 4 rows in set (0.00 sec)

从查询出来的结果可以看出,profiling_history_size = 15,指的是保存最近 15 条查询的效率分析,当然是可以修改的,所以我们需要开启该功能,方法是:

  1. set profiling = 1; # 关闭是 0
  2. # 或者
  3. set profiling = on; # 关闭是 off
  4. set profiling_history_size = 20; # 设置保留历史记录数量

这里只是临时开启,开启后仅当前会话有效,当会话关闭后又关闭了。

现在执行若干条 sql ,如下:

  1. select 1;
  2. select 23*56*29*98*33*101;
  3. select version();

最简单的查看保留的 sql 执行时间命令,Duration 是执行耗费时间:

  1. mysql> show profiles;
  2. +----------+------------+---------------------------+
  3. | Query_ID | Duration   | Query                     |
  4. +----------+------------+---------------------------+
  5. |        1 | 0.00013400 | select 1                  |
  6. |        2 | 0.00011500 | select 23*56*29*98*33*101 |
  7. |        3 | 0.00012750 | select version()          |
  8. +----------+------------+---------------------------+
  9. 3 rows in set, 1 warning (0.00 sec)

查看指定 Query 的执行状态如下:

  1. show profile for query 1;	# 查询 Query_ID = 1 的相关信息
  2. show profile all for query 1;	# 查询 Query_ID = 1 的详细信息
请输入图片名称请输入图片名称

最后就是这是一种分析 sql 的非常有效的途径,而我们最看重的就是 Duration,即执行时间,其他的信息仅做了解即可,欢迎大家的使用!

当然也可以在 navicate for mysql 上使用,可以方便我们复制多条 sql 的查询时间,可以手动计算总和。

请输入图片名称

版权归 马富天个人博客 所有

本文标题:《MySQL 高级部分 —— show profile 分析 sql 效率【 profiling 命令】》

本文链接地址:http://www.mafutian.com/418.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 Python 3.5 利用 Urllib3 包发送 post 请求并设置 header 和 body 中携带 json 格式数据 》 下一篇《 on update current_timestamp 在执行 update 是自动修改更新时间 》

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共1条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多