欢迎投稿

今日深度:

mysql性能调试工具profile,mysqlprofile

mysql性能调试工具profile,mysqlprofile


    我一直在找mysql中有没有类似Oracle 10046类似的工具,可以看到SQL执行的时间消耗在哪里。终于在网上找到一个profile,使用一些,觉得不错。

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.16    |
+-----------+
1 row in set (0.00 sec)


mysql> SELECT @@profiling;
+-------------+
| @@profiling |
+-------------+
|           0 |
+-------------+
1 row in set, 1 warning (0.00 sec)


mysql> SET profiling = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> select count(1) from test1 t1,test2 t2;
+----------+
| count(1) |
+----------+
|  7096832 |
+----------+
1 row in set (0.38 sec)


mysql> show profile cpu,block io for query 1;  --for query 1 是看第1条执行的SQL语句
+--------------------------------+----------+----------+------------+--------------+---------------+
| Status                         | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+----------+----------+------------+--------------+---------------+
| starting                       | 0.000006 | 0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| init                           | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| checking query cache for query | 0.000023 | 0.000000 |   0.000000 |         NULL |          NULL |
| checking permissions           | 0.000003 | 0.000000 |   0.000000 |         NULL |          NULL |
| checking permissions           | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| Opening tables                 | 0.000026 | 0.000000 |   0.000000 |         NULL |          NULL |
| init                           | 0.000008 | 0.000000 |   0.000000 |         NULL |          NULL |
| System lock                    | 0.000007 | 0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| System lock                    | 0.000022 | 0.000000 |   0.000000 |         NULL |          NULL |
| optimizing                     | 0.000004 | 0.000000 |   0.000000 |         NULL |          NULL |
| statistics                     | 0.000012 | 0.000000 |   0.000000 |         NULL |          NULL |
| preparing                      | 0.000022 | 0.000000 |   0.000000 |         NULL |          NULL |
| executing                      | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| Sending data                   | 0.388263 | 0.375000 |   0.000000 |         NULL |          NULL |
| end                            | 0.000017 | 0.000000 |   0.000000 |         NULL |          NULL |
| query end                      | 0.000008 | 0.000000 |   0.000000 |         NULL |          NULL |
| closing tables                 | 0.000014 | 0.000000 |   0.000000 |         NULL |          NULL |
| freeing items                  | 0.000006 | 0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| freeing items                  | 0.000045 | 0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| freeing items                  | 0.000002 | 0.000000 |   0.000000 |         NULL |          NULL |
| storing result in query cache  | 0.000004 | 0.000000 |   0.000000 |         NULL |          NULL |
| cleaning up                    | 0.000015 | 0.000000 |   0.000000 |         NULL |          NULL |
+--------------------------------+----------+----------+------------+--------------+---------------+
26 rows in set, 1 warning (0.00 sec)


mysql> select count(1) from test1 t1,test2 t2, test2 t3;
+------------+
| count(1)   |
+------------+
| 1185170944 |
+------------+
1 row in set (1 min 26.67 sec)


mysql> show profile cpu,block io for query 2;  --for query 2 是看第2条执行的SQL语句
+--------------------------------+-----------+-----------+------------+--------------+---------------+
| Status                         | Duration  | CPU_user  | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+-----------+-----------+------------+--------------+---------------+
| starting                       |  0.000005 |  0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| init                           |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| checking query cache for query |  0.000029 |  0.000000 |   0.000000 |         NULL |          NULL |
| checking permissions           |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| checking permissions           |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| checking permissions           |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| Opening tables                 |  0.000071 |  0.000000 |   0.000000 |         NULL |          NULL |
| init                           |  0.000008 |  0.000000 |   0.000000 |         NULL |          NULL |
| System lock                    |  0.000005 |  0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| System lock                    |  0.000021 |  0.000000 |   0.000000 |         NULL |          NULL |
| optimizing                     |  0.000004 |  0.000000 |   0.000000 |         NULL |          NULL |
| statistics                     |  0.000011 |  0.000000 |   0.000000 |         NULL |          NULL |
| preparing                      |  0.000019 |  0.000000 |   0.000000 |         NULL |          NULL |
| executing                      |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| Sending data                   | 86.679145 | 86.640625 |   0.000000 |         NULL |          NULL |
| end                            |  0.000024 |  0.000000 |   0.000000 |         NULL |          NULL |
| query end                      |  0.000008 |  0.000000 |   0.000000 |         NULL |          NULL |
| closing tables                 |  0.000014 |  0.000000 |   0.000000 |         NULL |          NULL |
| freeing items                  |  0.000006 |  0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| freeing items                  |  0.000045 |  0.000000 |   0.000000 |         NULL |          NULL |
| Waiting for query cache lock   |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| freeing items                  |  0.000002 |  0.000000 |   0.000000 |         NULL |          NULL |
| storing result in query cache  |  0.000003 |  0.000000 |   0.000000 |         NULL |          NULL |
| logging slow query             |  0.000003 |  0.000000 |   0.000000 |         NULL |          NULL |
| cleaning up                    |  0.000014 |  0.000000 |   0.000000 |         NULL |          NULL |
+--------------------------------+-----------+-----------+------------+--------------+---------------+
28 rows in set, 1 warning (0.00 sec)

SHOW PROFILES Syntax
SHOW PROFILE [type [, type] ... ]
    [FOR QUERY n]
    [LIMIT row_count [OFFSET offset]]
type:
    ALL
  | BLOCK IO
  | CONTEXT SWITCHES
  | CPU
  | IPC
  | MEMORY
  | PAGE FAULTS
  | SOURCE
  | SWAPS
type类型的含义:
ALL displays all information 
BLOCK IO displays counts for block input and output operations 
CONTEXT SWITCHES displays counts for voluntary and involuntary context switches 
CPU displays user and system CPU usage times 
IPC displays counts for messages sent and received 
MEMORY is not currently implemented 
PAGE FAULTS displays counts for major and minor page faults 
SOURCE displays the names of functions from the source code, together with the name and line number of the file in which the function occurs 
SWAPS displays swap counts 


为何Mysql会垃圾到连存储过程的单步调试功可以都没有?

mySQL是一个比较成熟的中小型数据库,用户非常广泛,其中也不乏知名的大公司。当然,每种东西都会有缺点,mysql也不例外,但是把它说成是垃圾,这一点无论是从技术上还是从感情上恐怕都是说不通的,更何况您的理由竟然是“phpmyadmin又难用界面难看死了,还有中文乱码”,不过这也正好说明了您对于mySQL的不了解(确切地说应该是“mySQL的文盲”,因为以上两个问题都正是您对于mySQL的无知才出现的,就算您说的对——它长得难看,那也可以换吗,mySQL的管理工具多得是了),我想通过您的进一步学习,您应该会喜欢上它的。
 

[MYSQL]怎调试存储过程?或调试方法

MYSQL 5.0以前是不支持存储过程的,当然如果你用了5以后的版本,自然可以了。

调试,是没办法的,只能看结果。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2708.html NewsArticle mysql性能调试工具profile,mysqlprofile 我一直在找mysql中有没有类Oracle 10046类的工具,可以看到SQL执行的时间消耗在哪里。终于在网上找到一个profile,使用一些,觉得不错。 mysql select versi...
相关文章
    暂无相关文章
评论暂时关闭