mysql效能調試工具profile,mysqlprofile

來源:互聯網
上載者:User

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以後的版本,自然可以了。

調試,是沒辦法的,只能看結果。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.