共计 3782 个字符,预计需要花费 10 分钟才能阅读完成。
这篇文章主要介绍了 mysql 中如何使用 show profiles 分析 sql 性能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
Show profiles 是 5.0.37 之后添加的,要想使用此功能,要确保版本在 5.0.37 之后。
查看一下我的版本
Select version();
+———————+
| version() |
+———————+
| 5.0.82-community-nt |
+———————+
www.2cto.com
1 row in set (0.00 sec)
版本是支持 show profiles 功能的。接下来进入 mysql 性能跟踪诊断的世界
查看是否打开了 profiles 功能, 默认是关闭的
mysql use test;
Database changed
mysql show profiles;
Empty set (0.00 sec)
显示为空,说明 profiles 功能是关闭的。下面开启
mysql set profiling=1;
Query OK, 0 rows affected (0.00 sec)
执行下面的查询
www.2cto.com
mysql explain select distinct player_idfrom task limit 20;
mysql select distinct player_id from task ;
然后执行 show profiles
mysql show profiles;
+———-+————+——————————————————+
| Query_ID | Duration | Query |
+———-+————+——————————————————+
| 1 | 0.00035225 | explain select distinct player_id from task limit 20 |
| 2 | 1.91772775 | select distinct player_id from task |
+———-+————+——————————————————+
此时可以看到执行 select distinct player_id from task 用了 1.91772775 秒的时间
根据 query_id 查看某个查询的详细时间耗费
mysql show profile for query 2;
www.2cto.com
+———————-+———-+
| Status | Duration |
+———————-+———-+
| starting | 0.000052 |
| Opening tables | 0.000009 |
| System lock | 0.000003 |
| Table lock | 0.000007 |
| init | 0.000013 |
| optimizing | 0.000003 |
| statistics | 0.000009 |
| preparing | 0.000008 |
| Creating tmp table | 0.000074 |
| executing | 0.000002 |
| Copying to tmp table |1.916551 |
www.2cto.com
| Sending data | 0.000667 |
| end | 0.000004 |
| removing tmp table | 0.000065 |
| end | 0.000002 |
| end | 0.000002 |
| query end | 0.000003 |
| freeing items | 0.000245 |
| closing tables | 0.000006 |
| logging slow query | 0.000002 |
| cleaning up | 0.000003 |
+———————-+———-+
可以看到红色字体部分耗费了大量时间,这是因为 distinct 查看会用到临时表
那么可不可以查看占用 cpu、io 等信息呢
mysql show profile block io,cpu for query2;
+———————-+———-+———-+————+————–+——
———+
| Status | Duration | CPU_user |CPU_system | Block_ops_in | Block
_ops_out |
+———————-+———-+———-+————+————–+——
www.2cto.com
———+
| starting | 0.000052 | NULL | NULL | NULL |
NULL |
| Opening tables | 0.000009 | NULL | NULL | NULL |
NULL |
| System lock | 0.000003 | NULL | NULL | NULL |
NULL |
| Table lock | 0.000007 | NULL | NULL | NULL |
NULL |
| init | 0.000013 | NULL | NULL | NULL |
NULL |
| optimizing | 0.000003 | NULL | NULL | NULL |
NULL |
| statistics | 0.000009 | NULL | NULL | NULL |
NULL | www.2cto.com
| preparing | 0.000008 | NULL | NULL | NULL |
NULL |
| Creating tmp table | 0.000074 | NULL | NULL | NULL |
NULL |
| executing | 0.000002 | NULL | NULL | NULL |
NULL |
| Copying to tmp table | 1.916551 | NULL | NULL | NULL |
NULL |
| Sending data | 0.000667 | NULL | NULL | NULL |
NULL |
| end | 0.000004 | NULL | NULL | NULL |
NULL |
| removing tmp table | 0.000065 | NULL | NULL | NULL |
NULL |
| end | 0.000002 | NULL | NULL | NULL |
NULL |
| end | 0.000002 | NULL | NULL | NULL |
NULL |
| query end | 0.000003 | NULL | NULL | NULL |
NULL |
| freeing items | 0.000245 | NULL | NULL | NULL |
NULL |
| closing tables | 0.000006 | NULL | NULL | NULL |
NULL |
www.2cto.com
| logging slow query | 0.000002 | NULL | NULL | NULL |
NULL |
| cleaning up | 0.000003 | NULL | NULL | NULL |
NULL |
+———————-+———-+———-+————+————–+——
另外还可以看到 memory,swaps,context switches,source 等信息
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“mysql 中如何使用 show profiles 分析 sql 性能”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!