mysql profiler工具开启与使用

  • baagee 发布于 2016-05-25 22:09:08
  • 分类:MySQL
  • 1497 人围观
  • 3 人喜欢

在大数据量的应用中,常常需要对数据库配置和SQL语句进行优化,以保证应用在负载大数据量时的并发性。MySQL内置有分析器Profiler,通过Profiler,开发者能够方便快速的了解MySQL大概的性能。使用Profiler非常简单,只需设置系统变量“profiling = on”或“profiling = 1”,默认情况下,Profiler是关闭的,可以通过命令“SELECT @@profiling;”或“SHOW variables LIKE ‘%profiling%’;”查看Profiler状态。

默认是关闭的,执行set profiling=on;来开启它。

再来查看就变成ON了;

mysql> show variables like "%profiling%";
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| have_profiling         | YES   |
| profiling              | ON    |
| profiling_history_size | 15    |
+------------------------+-------+
3 rows in set (0.00 sec)
以本机的ims_ly_jhb_winner为例,介绍他的使用:
mysql> select count(*) from ims_ly_jhb_winner;
+----------+
| count(*) |
+----------+
|    74446 |
+----------+
1 row in set (0.42 sec)

mysql> show profiles;
+----------+------------+----------------------------------------+
| Query_ID | Duration   | Query                                  |
+----------+------------+----------------------------------------+
|        1 | 0.00052200 | show variables like "%profiling%"      |
|        2 | 0.39817575 | show databases                         |
|        3 | 0.00028225 | SELECT DATABASE()                      |
|        4 | 0.00236600 | show tables                            |
|        5 | 0.00052675 | show variables like "%profiling%"      |
|        6 | 0.42040950 | select count(*) from ims_ly_jhb_winner |
+----------+------------+----------------------------------------+
7 rows in set (0.32 sec)

mysql> show profile for query 6;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000458 |//开始
| checking permissions | 0.000010 |//检查权限
| Opening tables       | 0.400767 |//打开表
| System lock          | 0.000028 |//系统锁
| init                 | 0.018945 |//初始化
| optimizing           | 0.000026 |//优化
| executing            | 0.000019 |//执行
| end                  | 0.000007 |//结束
| query end            | 0.000005 |//查询结束
| closing tables       | 0.000021 |//关闭表
| freeing items        | 0.000110 |//释放项目
| logging slow query   | 0.000007 |//记录慢速查询
| cleaning up          | 0.000006 |//清理
+----------------------+----------+
13 rows in set (0.00 sec)
以上可以清晰的看到执行一条SQL语句的具体流程,包括:初始化,打开表,锁定表等。这样就能大概了解在哪一步花费时间较多,从而可以针对性的对数据库或SQL语句进行优化。

总的来说,在进行数据库性能分析时,Profiler可以作为一种简单快速的分析工具,先通过它大概的获取一些信息,再配合其它专门的性能分析工具,可以取得很好的效果。


标签: MySQL profiler

评论

点击图片切换
还没有评论,快来抢沙发吧!