博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】很多时候我们需要对 sql 语句进行优化,就常常需要分析 sql 语句的执行效率,本文的话介绍 MySQL 的高级部分,使用 show profile 来对执行的 sql 进行分析。
profiling 命令是 MySQL 提供给用户分析当前会话中 sql 语句执行的资源消耗情况的诊断工具,主要用于 sql 语句的性能调优。
profiling 是在 MySQL 5.0.37 及之后版本添加的,首先查询版本方法:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.17 |
+-----------+
1 row in set (0.00 sec)
在默认情况下 profiling 是关闭的,查询 profiling 的状态:
mysql> show variables like "pro%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| profiling | OFF |
| profiling_history_size | 15 |
| protocol_version | 10 |
| proxy_user | |
+------------------------+-------+
4 rows in set (0.00 sec)
从查询出来的结果可以看出,profiling_history_size = 15,指的是保存最近 15 条查询的效率分析,当然是可以修改的,所以我们需要开启该功能,方法是:
set profiling = 1; # 关闭是 0
# 或者
set profiling = on; # 关闭是 off
set profiling_history_size = 20; # 设置保留历史记录数量
这里只是临时开启,开启后仅当前会话有效,当会话关闭后又关闭了。
现在执行若干条 sql ,如下:
select 1;
select 23*56*29*98*33*101;
select version();
最简单的查看保留的 sql 执行时间命令,Duration 是执行耗费时间:
mysql> show profiles;
+----------+------------+---------------------------+
| Query_ID | Duration | Query |
+----------+------------+---------------------------+
| 1 | 0.00013400 | select 1 |
| 2 | 0.00011500 | select 23*56*29*98*33*101 |
| 3 | 0.00012750 | select version() |
+----------+------------+---------------------------+
3 rows in set, 1 warning (0.00 sec)
查看指定 Query 的执行状态如下:
show profile for query 1; # 查询 Query_ID = 1 的相关信息
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
第 1 楼 热血学霸 2019-04-19 16:04:37 暂无分享
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||