zoukankan      html  css  js  c++  java
  • 查看mysql正在执行的SQL语句,使用profile分析SQL执行状态

    http://qq85609655.iteye.com/blog/2113960

     

    1)我们先通过status命令查看Mysql运行状态

    mysql> status;

    --------------

    mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

    Connection id: 113752

    Current database: information_schema

    Current user: push_user@localhost

    SSL: Not in use

    Current pager: stdout

    Using outfile: ''

    Using delimiter: ;

    Server version: 5.1.73 Source distribution

    Protocol version: 10

    Connection: Localhost via UNIX socket

    Server characterset: latin1

    Db characterset: utf8

    Client characterset: latin1

    Conn. characterset: latin1

    UNIX socket: /tmp/mysql.sock

    Uptime: 22 days 8 hours 31 min 23 sec

    Threads: 38 Questions: 1037751897 Slow queries: 2356 Opens: 79836 Flush tables: 1 Open tables: 64 Queries per second avg: 537.282

    --------------

    在上面显示列表的最后一条,我们来查看Slow queries这一项的值,如果多次查看的值大于0的话,说明有些查询sql命令执行时间过长。

    2)这时再通过show processlist命令来查看当前正在运行的SQL,从中找出运行慢的SQL语句,找到执行慢的语句后,再用explain命令查看这些语句的执行计划。

    mysql> show processlist;

    +--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+

    | Id | User | Host | db | Command | Time | State | Info |

    +--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+

    | 50270 | ambari | DataBase-01:41512 | ambari | Sleep | 23 | | NULL |

    | 50271 | ambari | DataBase-01:41511 | ambari | Sleep | 6 | | NULL |

    | 50272 | ambari | DataBase-01:41514 | ambari | Sleep | 23 | | NULL |

    | 62452 | oozie | DataBase-02:42987 | oozie | Sleep | 25 | | NULL |

    | 63660 | ambari | DataBase-01:56052 | ambari | Sleep | 0 | | NULL |

    | 110404 | push_user | localhost:33817 | quartz | Sleep | 12 | | NULL |

    | 112835 | push_user | localhost:46571 | hibernate | Sleep | 1 | | NULL |

    | 113163 | push_user | localhost:56585 | hibernate | Sleep | 1 | | NULL |

    | 113289 | push_user | 14.118.132.20:47333 | DW | Sleep | 628 | | NULL |

    | 113320 | push_user | localhost:47428 | hibernate | Sleep | 3 | | NULL |

    | 113321 | push_user | localhost:47429 | hibernate | Sleep | 3 | | NULL |

    | 113322 | push_user | localhost:47430 | hibernate | Sleep | 3 | | NULL |

    | 113357 | push_user | localhost:52337 | hibernate | Sleep | 3 | | NULL |

    | 113364 | push_user | localhost:57206 | hibernate | Sleep | 3 | | NULL |

    | 113366 | push_user | localhost:34813 | hibernate | Sleep | 1 | | NULL |

    | 113398 | push_user | localhost:37382 | hibernate | Sleep | 1 | | NULL |

    | 113498 | push_user | localhost:47626 | quartz | Sleep | 12717 | | NULL |

    | 113709 | push_user | localhost:59382 | hibernate | Sleep | 1 | | NULL |

    | 113710 | push_user | localhost:33627 | hibernate | Sleep | 1 | | NULL |

    | 113715 | hive | DataBase-02:54968 | hive | Sleep | 2390 | | NULL |

    | 113716 | hive | DataBase-02:54969 | hive | Sleep | 2390 | | NULL |

    | 113717 | hive | DataBase-02:54974 | hive | Sleep | 2336 | | NULL |

    | 113718 | hive | DataBase-02:54975 | hive | Sleep | 2336 | | NULL |

    | 113719 | push_user | localhost:48243 | hibernate | Sleep | 1 | | NULL |

    | 113720 | push_user | localhost:48245 | hibernate | Sleep | 1 | | NULL |

    | 113721 | push_user | localhost:48244 | hibernate | Sleep | 1 | | NULL |

    | 113722 | push_user | localhost:48247 | hibernate | Sleep | 1 | | NULL |

    | 113723 | push_user | localhost:48249 | hibernate | Sleep | 1 | | NULL |

    | 113724 | push_user | localhost:48248 | hibernate | Sleep | 1 | | NULL |

    | 113745 | push_user | localhost:50684 | hibernate | Sleep | 1 | | NULL |

    | 113746 | push_user | localhost:50685 | hibernate | Sleep | 1 | | NULL |

    | 113747 | push_user | localhost:50695 | hibernate | Sleep | 1 | | NULL |

    | 113748 | push_user | localhost:50696 | hibernate | Sleep | 1 | | NULL |

    | 113749 | push_user | localhost:50697 | hibernate | Sleep | 1 | | NULL |

    | 113750 | push_user | localhost:50699 | hibernate | Sleep | 1 | | NULL |

    | 113751 | push_user | localhost:50700 | hibernate | Sleep | 1 | | NULL |

    | 113752 | push_user | localhost | information_schema | Query | 0 | NULL | show processlist |

    | 113753 | push_user | 14.118.132.20:28688 | DW | Sleep | 396 | | NULL |

    +--------+-----------+---------------------+--------------------+---------+-------+-------+------------------+

    38 rows in set (0.00 sec)

    或者通过如下命令查询:

    mysql> use information_schema;

    mysql> select * from PROCESSLIST where info is not null;

    +--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+

    | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |

    +--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+

    | 113752 | push_user | localhost | information_schema | Query | 0 | executing | select * from PROCESSLIST where info is not null |

    +--------+-----------+-----------+--------------------+---------+------+-----------+--------------------------------------------------+

    1 row in set (0.00 sec)

    MySQL使用profile分析SQL执行状态

    打开profile

    1. mysql> select @@have_profiling;
    2. +------------------+
    3. | @@have_profiling |
    4. +------------------+
    5. | YES |
    6. +------------------+
    7. 1 row in set (0.00 sec)
    8. mysql> select @@profiling;
    9. +-------------+
    10. | @@profiling |
    11. +-------------+
    12. | 0 |
    13. +-------------+
    14. 1 row in set (0.00 sec)
    15. mysql> set session profiling=1;
    16. Query OK, 0 rows affected (0.00 sec)
    17. mysql> select @@profiling;
    18. +-------------+
    19. | @@profiling |
    20. +-------------+
    21. | 1 |
    22. +-------------+
    23. 1 row in set (0.00 sec)
    1. mysql> select @@have_profiling;  
    2. +------------------+  
    3. | @@have_profiling |  
    4. +------------------+  
    5. | YES              |  
    6. +------------------+  
    7. 1 row in set (0.00 sec)  
    8.   
    9. mysql> select @@profiling;  
    10. +-------------+  
    11. | @@profiling |  
    12. +-------------+  
    13. |           0 |  
    14. +-------------+  
    15. 1 row in set (0.00 sec)  
    16.   
    17. mysql> set session profiling=1;  
    18. Query OK, 0 rows affected (0.00 sec)  
    19.   
    20. mysql> select @@profiling;  
    21. +-------------+  
    22. | @@profiling |  
    23. +-------------+  
    24. |           1 |  
    25. +-------------+  
    26. 1 row in set (0.00 sec)  


    使用profile分析SQL,可以看到执行两次后,Send data和sending cached result to clien执行效率的变化

    1. mysql> select count(*) from sakila.payment;
    2. +----------+
    3. | count(*) |
    4. +----------+
    5. | 16049 |
    6. +----------+
    7. 1 row in set (0.03 sec)
    8. mysql> show profiles;
    9. +----------+------------+-------------------------------------+
    10. | Query_ID | Duration | Query |
    11. +----------+------------+-------------------------------------+
    12. | 1 | 0.00020400 | select @@profiling |
    13. | 2 | 0.00008900 | select count(*) from payment |
    14. | 3 | 0.00006800 | show databaes |
    15. | 4 | 0.02102800 | show databases |
    16. | 5 | 0.02847600 | select count(*) from sakila.payment |
    17. +----------+------------+-------------------------------------+
    18. 5 rows in set (0.00 sec)
    1. mysql> select count(*) from sakila.payment;  
    2. +----------+  
    3. | count(*) |  
    4. +----------+  
    5. |    16049 |  
    6. +----------+  
    7. 1 row in set (0.03 sec)  
    8.   
    9. mysql> show profiles;  
    10. +----------+------------+-------------------------------------+  
    11. | Query_ID | Duration   | Query                               |  
    12. +----------+------------+-------------------------------------+  
    13. |        1 | 0.00020400 | select @@profiling                  |  
    14. |        2 | 0.00008900 | select count(*) from payment        |  
    15. |        3 | 0.00006800 | show databaes                       |  
    16. |        4 | 0.02102800 | show databases                      |  
    17. |        5 | 0.02847600 | select count(*) from sakila.payment |  
    18. +----------+------------+-------------------------------------+  
    19. 5 rows in set (0.00 sec)  

     
    1. mysql> show profile for query 5;
    2. +--------------------------------+----------+
    3. | Status | Duration |
    4. +--------------------------------+----------+
    5. | starting | 0.000030 |
    6. | Waiting for query cache lock | 0.000005 |
    7. | checking query cache for query | 0.000043 |
    8. | checking permissions | 0.000007 |
    9. | Opening tables | 0.000027 |
    10. | System lock | 0.000010 |
    11. | Waiting for query cache lock | 0.000010 |
    12. | init | 0.000000 |
    13. | optimizing | 0.023255 |
    14. | statistics | 0.000118 |
    15. | preparing | 0.000041 |
    16. | executing | 0.000033 |
    17. | Sending data | 0.003833 |
    18. | end | 0.000054 |
    19. | query end | 0.000045 |
    20. | closing tables | 0.000045 |
    21. | freeing items | 0.000072 |
    22. | Waiting for query cache lock | 0.000033 |
    23. | freeing items | 0.000785 |
    24. | Waiting for query cache lock | 0.000016 |
    25. | freeing items | 0.000002 |
    26. | storing result in query cache | 0.000005 |
    27. | logging slow query | 0.000003 |
    28. | cleaning up | 0.000004 |
    29. +--------------------------------+----------+
    30. 24 rows in set (0.00 sec)
    31. mysql> select count(*) from sakila.payment;
    32. +----------+
    33. | count(*) |
    34. +----------+
    35. | 16049 |
    36. +----------+
    37. 1 row in set (0.00 sec)
    38. mysql> show profiles;
    39. +----------+------------+-------------------------------------+
    40. | Query_ID | Duration | Query |
    41. +----------+------------+-------------------------------------+
    42. | 1 | 0.00020400 | select @@profiling |
    43. | 2 | 0.00008900 | select count(*) from payment |
    44. | 3 | 0.00006800 | show databaes |
    45. | 4 | 0.02102800 | show databases |
    46. | 5 | 0.02847600 | select count(*) from sakila.payment |
    47. | 6 | 0.00006900 | select count(*) from sakila.payment |
    48. +----------+------------+-------------------------------------+
    49. 6 rows in set (0.00 sec)
    50. mysql> show profile for query 6;
    51. +--------------------------------+----------+
    52. | Status | Duration |
    53. +--------------------------------+----------+
    54. | starting | 0.000029 |
    55. | Waiting for query cache lock | 0.000004 |
    56. | checking query cache for query | 0.000007 |
    57. | checking privileges on cached | 0.000004 |
    58. | checking permissions | 0.000008 |
    59. | sending cached result to clien | 0.000012 |
    60. | logging slow query | 0.000002 |
    61. | cleaning up | 0.000003 |
    62. +--------------------------------+----------+
    63. 8 rows in set (0.00 sec)
    1. mysql> show profile for query 5;  
    2. +--------------------------------+----------+  
    3. | Status                         | Duration |  
    4. +--------------------------------+----------+  
    5. | starting                       | 0.000030 |  
    6. | Waiting for query cache lock   | 0.000005 |  
    7. | checking query cache for query | 0.000043 |  
    8. | checking permissions           | 0.000007 |  
    9. | Opening tables                 | 0.000027 |  
    10. | System lock                    | 0.000010 |  
    11. | Waiting for query cache lock   | 0.000010 |  
    12. | init                           | 0.000000 |  
    13. | optimizing                     | 0.023255 |  
    14. | statistics                     | 0.000118 |  
    15. | preparing                      | 0.000041 |  
    16. | executing                      | 0.000033 |  
    17. | Sending data                   | 0.003833 |  
    18. | end                            | 0.000054 |  
    19. | query end                      | 0.000045 |  
    20. | closing tables                 | 0.000045 |  
    21. | freeing items                  | 0.000072 |  
    22. | Waiting for query cache lock   | 0.000033 |  
    23. | freeing items                  | 0.000785 |  
    24. | Waiting for query cache lock   | 0.000016 |  
    25. | freeing items                  | 0.000002 |  
    26. | storing result in query cache  | 0.000005 |  
    27. | logging slow query             | 0.000003 |  
    28. | cleaning up                    | 0.000004 |  
    29. +--------------------------------+----------+  
    30. 24 rows in set (0.00 sec)  
    31.   
    32. mysql> select count(*) from sakila.payment;  
    33. +----------+  
    34. | count(*) |  
    35. +----------+  
    36. |    16049 |  
    37. +----------+  
    38. 1 row in set (0.00 sec)  
    39.   
    40. mysql> show profiles;  
    41. +----------+------------+-------------------------------------+  
    42. | Query_ID | Duration   | Query                               |  
    43. +----------+------------+-------------------------------------+  
    44. |        1 | 0.00020400 | select @@profiling                  |  
    45. |        2 | 0.00008900 | select count(*) from payment        |  
    46. |        3 | 0.00006800 | show databaes                       |  
    47. |        4 | 0.02102800 | show databases                      |  
    48. |        5 | 0.02847600 | select count(*) from sakila.payment |  
    49. |        6 | 0.00006900 | select count(*) from sakila.payment |  
    50. +----------+------------+-------------------------------------+  
    51. 6 rows in set (0.00 sec)  
    52.   
    53. mysql> show profile for query 6;  
    54. +--------------------------------+----------+  
    55. | Status                         | Duration |  
    56. +--------------------------------+----------+  
    57. | starting                       | 0.000029 |  
    58. | Waiting for query cache lock   | 0.000004 |  
    59. | checking query cache for query | 0.000007 |  
    60. | checking privileges on cached  | 0.000004 |  
    61. | checking permissions           | 0.000008 |  
    62. | sending cached result to clien | 0.000012 |  
    63. | logging slow query             | 0.000002 |  
    64. | cleaning up                    | 0.000003 |  
    65. +--------------------------------+----------+  
    66. 8 rows in set (0.00 sec)  


    sending data比较耗费cpu

    1. mysql> select min(seq) seq,state,count(*) numb_ops,
    2. -> round(sum(duration),5) sum_dur, round(avg(duration),5) avg_dur,
    3. -> round(sum(cpu_user),5) sum_cpu, round(avg(cpu_user),5) avg_cpu
    4. -> from information_schema.profiling
    5. -> where query_id = 5
    6. -> group by state
    7. -> order by seq;
    8. +------+--------------------------------+----------+---------+---------+---------+---------+
    9. | seq | state | numb_ops | sum_dur | avg_dur | sum_cpu | avg_cpu |
    10. +------+--------------------------------+----------+---------+---------+---------+---------+
    11. | 2 | starting | 1 | 0.00003 | 0.00003 | 0.00000 | 0.00000 |
    12. | 3 | Waiting for query cache lock | 4 | 0.00006 | 0.00002 | 0.00100 | 0.00025 |
    13. | 4 | checking query cache for query | 1 | 0.00004 | 0.00004 | 0.00000 | 0.00000 |
    14. | 5 | checking permissions | 1 | 0.00001 | 0.00001 | 0.00000 | 0.00000 |
    15. | 6 | Opening tables | 1 | 0.00003 | 0.00003 | 0.00000 | 0.00000 |
    16. | 7 | System lock | 1 | 0.00001 | 0.00001 | 0.00000 | 0.00000 |
    17. | 9 | init | 1 | 0.00000 | 0.00000 | 0.00000 | 0.00000 |
    18. | 10 | optimizing | 1 | 0.02326 | 0.02326 | 0.00000 | 0.00000 |
    19. | 11 | statistics | 1 | 0.00012 | 0.00012 | 0.00000 | 0.00000 |
    20. | 12 | preparing | 1 | 0.00004 | 0.00004 | 0.00000 | 0.00000 |
    21. | 13 | executing | 1 | 0.00003 | 0.00003 | 0.00000 | 0.00000 |
    22. | 14 | Sending data | 1 | 0.00383 | 0.00383 | 0.00300 | 0.00300 |
    23. | 15 | end | 1 | 0.00005 | 0.00005 | 0.00000 | 0.00000 |
    24. | 16 | query end | 1 | 0.00005 | 0.00005 | 0.00000 | 0.00000 |
    25. | 17 | closing tables | 1 | 0.00005 | 0.00005 | 0.00000 | 0.00000 |
    26. | 18 | freeing items | 3 | 0.00086 | 0.00029 | 0.00000 | 0.00000 |
    27. | 23 | storing result in query cache | 1 | 0.00001 | 0.00001 | 0.00000 | 0.00000 |
    28. | 24 | logging slow query | 1 | 0.00000 | 0.00000 | 0.00000 | 0.00000 |
    29. | 25 | cleaning up | 1 | 0.00000 | 0.00000 | 0.00000 | 0.00000 |
    30. +------+--------------------------------+----------+---------+---------+---------+---------+
    31. 19 rows in set (0.00 sec)
    32. mysql> show profile cpu for query 5;
    33. +--------------------------------+----------+----------+------------+
    34. | Status | Duration | CPU_user | CPU_system |
    35. +--------------------------------+----------+----------+------------+
    36. | starting | 0.000030 | 0.000000 | 0.000000 |
    37. | Waiting for query cache lock | 0.000005 | 0.000000 | 0.000000 |
    38. | checking query cache for query | 0.000043 | 0.000000 | 0.000000 |
    39. | checking permissions | 0.000007 | 0.000000 | 0.000000 |
    40. | Opening tables | 0.000027 | 0.000000 | 0.000000 |
    41. | System lock | 0.000010 | 0.000000 | 0.000000 |
    42. | Waiting for query cache lock | 0.000010 | 0.001000 | 0.000000 |
    43. | init | 0.000000 | 0.000000 | 0.000000 |
    44. | optimizing | 0.023255 | 0.000000 | 0.000000 |
    45. | statistics | 0.000118 | 0.000000 | 0.000000 |
    46. | preparing | 0.000041 | 0.000000 | 0.000000 |
    47. | executing | 0.000033 | 0.000000 | 0.000000 |
    48. | Sending data | 0.003833 | 0.002999 | 0.001000 |
    49. | end | 0.000054 | 0.000000 | 0.000000 |
    50. | query end | 0.000045 | 0.000000 | 0.000000 |
    51. | closing tables | 0.000045 | 0.000000 | 0.000000 |
    52. | freeing items | 0.000072 | 0.000000 | 0.000000 |
    53. | Waiting for query cache lock | 0.000033 | 0.000000 | 0.000000 |
    54. | freeing items | 0.000785 | 0.000000 | 0.000000 |
    55. | Waiting for query cache lock | 0.000016 | 0.000000 | 0.000000 |
    56. | freeing items | 0.000002 | 0.000000 | 0.000000 |
    57. | storing result in query cache | 0.000005 | 0.000000 | 0.000000 |
    58. | logging slow query | 0.000003 | 0.000000 | 0.000000 |
    59. | cleaning up | 0.000004 | 0.000000 | 0.000000 |
    60. +--------------------------------+----------+----------+------------+
    61. 24 rows in set (0.00 sec)
    62. mysql> show profile block io for query 5;
    63. +--------------------------------+----------+--------------+---------------+
    64. | Status | Duration | Block_ops_in | Block_ops_out |
    65. +--------------------------------+----------+--------------+---------------+
    66. | starting | 0.000030 | 0 | 0 |
    67. | Waiting for query cache lock | 0.000005 | 0 | 0 |
    68. | checking query cache for query | 0.000043 | 0 | 0 |
    69. | checking permissions | 0.000007 | 0 | 0 |
    70. | Opening tables | 0.000027 | 0 | 0 |
    71. | System lock | 0.000010 | 0 | 0 |
    72. | Waiting for query cache lock | 0.000010 | 0 | 0 |
    73. | init | 0.000000 | 0 | 0 |
    74. | optimizing | 0.023255 | 0 | 0 |
    75. | statistics | 0.000118 | 0 | 0 |
    76. | preparing | 0.000041 | 0 | 0 |
    77. | executing | 0.000033 | 0 | 0 |
    78. | Sending data | 0.003833 | 0 | 0 |
    79. | end | 0.000054 | 0 | 0 |
    80. | query end | 0.000045 | 0 | 0 |
    81. | closing tables | 0.000045 | 0 | 0 |
    82. | freeing items | 0.000072 | 0 | 0 |
    83. | Waiting for query cache lock | 0.000033 | 0 | 0 |
    84. | freeing items | 0.000785 | 0 | 0 |
    85. | Waiting for query cache lock | 0.000016 | 0 | 0 |
    86. | freeing items | 0.000002 | 0 | 0 |
    87. | storing result in query cache | 0.000005 | 0 | 0 |
    88. | logging slow query | 0.000003 | 0 | 0 |
    89. | cleaning up | 0.000004 | 0 | 0 |
    90. +--------------------------------+----------+--------------+---------------+
    91. 24 rows in set (0.00 sec)
    1. mysql> select min(seq) seq,state,count(*) numb_ops,  
    2.     ->     round(sum(duration),5) sum_dur, round(avg(duration),5) avg_dur,  
    3.     ->     round(sum(cpu_user),5) sum_cpu, round(avg(cpu_user),5) avg_cpu  
    4.     ->     from information_schema.profiling  
    5.     ->     where query_id = 5  
    6.     ->     group by state  
    7.     ->     order by seq;  
    8. +------+--------------------------------+----------+---------+---------+---------+---------+  
    9. | seq  | state                          | numb_ops | sum_dur | avg_dur | sum_cpu | avg_cpu |  
    10. +------+--------------------------------+----------+---------+---------+---------+---------+  
    11. |    2 | starting                       |        1 | 0.00003 | 0.00003 | 0.00000 | 0.00000 |  
    12. |    3 | Waiting for query cache lock   |        4 | 0.00006 | 0.00002 | 0.00100 | 0.00025 |  
    13. |    4 | checking query cache for query |        1 | 0.00004 | 0.00004 | 0.00000 | 0.00000 |  
    14. |    5 | checking permissions           |        1 | 0.00001 | 0.00001 | 0.00000 | 0.00000 |  
    15. |    6 | Opening tables                 |        1 | 0.00003 | 0.00003 | 0.00000 | 0.00000 |  
    16. |    7 | System lock                    |        1 | 0.00001 | 0.00001 | 0.00000 | 0.00000 |  
    17. |    9 | init                           |        1 | 0.00000 | 0.00000 | 0.00000 | 0.00000 |  
    18. |   10 | optimizing                     |        1 | 0.02326 | 0.02326 | 0.00000 | 0.00000 |  
    19. |   11 | statistics                     |        1 | 0.00012 | 0.00012 | 0.00000 | 0.00000 |  
    20. |   12 | preparing                      |        1 | 0.00004 | 0.00004 | 0.00000 | 0.00000 |  
    21. |   13 | executing                      |        1 | 0.00003 | 0.00003 | 0.00000 | 0.00000 |  
    22. |   14 | Sending data                   |        1 | 0.00383 | 0.00383 | 0.00300 | 0.00300 |  
    23. |   15 | end                            |        1 | 0.00005 | 0.00005 | 0.00000 | 0.00000 |  
    24. |   16 | query end                      |        1 | 0.00005 | 0.00005 | 0.00000 | 0.00000 |  
    25. |   17 | closing tables                 |        1 | 0.00005 | 0.00005 | 0.00000 | 0.00000 |  
    26. |   18 | freeing items                  |        3 | 0.00086 | 0.00029 | 0.00000 | 0.00000 |  
    27. |   23 | storing result in query cache  |        1 | 0.00001 | 0.00001 | 0.00000 | 0.00000 |  
    28. |   24 | logging slow query             |        1 | 0.00000 | 0.00000 | 0.00000 | 0.00000 |  
    29. |   25 | cleaning up                    |        1 | 0.00000 | 0.00000 | 0.00000 | 0.00000 |  
    30. +------+--------------------------------+----------+---------+---------+---------+---------+  
    31. 19 rows in set (0.00 sec)  
    32.   
    33. mysql> show profile cpu for query 5;  
    34. +--------------------------------+----------+----------+------------+  
    35. | Status                         | Duration | CPU_user | CPU_system |  
    36. +--------------------------------+----------+----------+------------+  
    37. | starting                       | 0.000030 | 0.000000 |   0.000000 |  
    38. | Waiting for query cache lock   | 0.000005 | 0.000000 |   0.000000 |  
    39. | checking query cache for query | 0.000043 | 0.000000 |   0.000000 |  
    40. | checking permissions           | 0.000007 | 0.000000 |   0.000000 |  
    41. | Opening tables                 | 0.000027 | 0.000000 |   0.000000 |  
    42. | System lock                    | 0.000010 | 0.000000 |   0.000000 |  
    43. | Waiting for query cache lock   | 0.000010 | 0.001000 |   0.000000 |  
    44. | init                           | 0.000000 | 0.000000 |   0.000000 |  
    45. | optimizing                     | 0.023255 | 0.000000 |   0.000000 |  
    46. | statistics                     | 0.000118 | 0.000000 |   0.000000 |  
    47. | preparing                      | 0.000041 | 0.000000 |   0.000000 |  
    48. | executing                      | 0.000033 | 0.000000 |   0.000000 |  
    49. | Sending data                   | 0.003833 | 0.002999 |   0.001000 |  
    50. | end                            | 0.000054 | 0.000000 |   0.000000 |  
    51. | query end                      | 0.000045 | 0.000000 |   0.000000 |  
    52. | closing tables                 | 0.000045 | 0.000000 |   0.000000 |  
    53. | freeing items                  | 0.000072 | 0.000000 |   0.000000 |  
    54. | Waiting for query cache lock   | 0.000033 | 0.000000 |   0.000000 |  
    55. | freeing items                  | 0.000785 | 0.000000 |   0.000000 |  
    56. | Waiting for query cache lock   | 0.000016 | 0.000000 |   0.000000 |  
    57. | freeing items                  | 0.000002 | 0.000000 |   0.000000 |  
    58. | storing result in query cache  | 0.000005 | 0.000000 |   0.000000 |  
    59. | logging slow query             | 0.000003 | 0.000000 |   0.000000 |  
    60. | cleaning up                    | 0.000004 | 0.000000 |   0.000000 |  
    61. +--------------------------------+----------+----------+------------+  
    62. 24 rows in set (0.00 sec)  
    63.   
    64. mysql> show profile block io for query 5;  
    65. +--------------------------------+----------+--------------+---------------+  
    66. | Status                         | Duration | Block_ops_in | Block_ops_out |  
    67. +--------------------------------+----------+--------------+---------------+  
    68. | starting                       | 0.000030 |            0 |             0 |  
    69. | Waiting for query cache lock   | 0.000005 |            0 |             0 |  
    70. | checking query cache for query | 0.000043 |            0 |             0 |  
    71. | checking permissions           | 0.000007 |            0 |             0 |  
    72. | Opening tables                 | 0.000027 |            0 |             0 |  
    73. | System lock                    | 0.000010 |            0 |             0 |  
    74. | Waiting for query cache lock   | 0.000010 |            0 |             0 |  
    75. | init                           | 0.000000 |            0 |             0 |  
    76. | optimizing                     | 0.023255 |            0 |             0 |  
    77. | statistics                     | 0.000118 |            0 |             0 |  
    78. | preparing                      | 0.000041 |            0 |             0 |  
    79. | executing                      | 0.000033 |            0 |             0 |  
    80. | Sending data                   | 0.003833 |            0 |             0 |  
    81. | end                            | 0.000054 |            0 |             0 |  
    82. | query end                      | 0.000045 |            0 |             0 |  
    83. | closing tables                 | 0.000045 |            0 |             0 |  
    84. | freeing items                  | 0.000072 |            0 |             0 |  
    85. | Waiting for query cache lock   | 0.000033 |            0 |             0 |  
    86. | freeing items                  | 0.000785 |            0 |             0 |  
    87. | Waiting for query cache lock   | 0.000016 |            0 |             0 |  
    88. | freeing items                  | 0.000002 |            0 |             0 |  
    89. | storing result in query cache  | 0.000005 |            0 |             0 |  
    90. | logging slow query             | 0.000003 |            0 |             0 |  
    91. | cleaning up                    | 0.000004 |            0 |             0 |  
    92. +--------------------------------+----------+--------------+---------------+  
    93. 24 rows in set (0.00 sec)  


    再看同结构数据的MyISAM表

    1. mysql> create table payment_myisam like payment;
    2. Query OK, 0 rows affected (0.03 sec)
    3. mysql> alter table payment_myisam engine=myisam;
    4. Query OK, 0 rows affected (0.03 sec)
    5. Records: 0 Duplicates: 0 Warnings: 0
    6. mysql> show create table payment_myisamG
    7. *************************** 1. row ***************************
    8. Table: payment_myisam
    9. Create Table: CREATE TABLE `payment_myisam` (
    10. `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
    11. `customer_id` smallint(5) unsigned NOT NULL,
    12. `staff_id` tinyint(3) unsigned NOT NULL,
    13. `rental_id` int(11) DEFAULT NULL,
    14. `amount` decimal(5,2) NOT NULL,
    15. `payment_date` datetime NOT NULL,
    16. `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    17. PRIMARY KEY (`payment_id`),
    18. KEY `idx_fk_staff_id` (`staff_id`),
    19. KEY `idx_fk_customer_id` (`customer_id`),
    20. KEY `fk_payment_rental` (`rental_id`)
    21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    22. 1 row in set (0.00 sec)
    23. mysql> insert into payment_myisam select * from payment;
    24. Query OK, 16049 rows affected (0.10 sec)
    25. Records: 16049 Duplicates: 0 Warnings: 0
    1. mysql> create table payment_myisam like payment;  
    2. Query OK, 0 rows affected (0.03 sec)  
    3.   
    4. mysql> alter table payment_myisam engine=myisam;  
    5. Query OK, 0 rows affected (0.03 sec)  
    6. Records: 0  Duplicates: 0  Warnings: 0  
    7.   
    8. mysql> show create table payment_myisamG  
    9. *************************** 1. row ***************************  
    10.        Table: payment_myisam  
    11. Create Table: CREATE TABLE `payment_myisam` (  
    12.   `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,  
    13.   `customer_id` smallint(5) unsigned NOT NULL,  
    14.   `staff_id` tinyint(3) unsigned NOT NULL,  
    15.   `rental_id` int(11) DEFAULT NULL,  
    16.   `amount` decimal(5,2) NOT NULL,  
    17.   `payment_date` datetime NOT NULL,  
    18.   `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
    19.   PRIMARY KEY (`payment_id`),  
    20.   KEY `idx_fk_staff_id` (`staff_id`),  
    21.   KEY `idx_fk_customer_id` (`customer_id`),  
    22.   KEY `fk_payment_rental` (`rental_id`)  
    23. ) ENGINE=MyISAM DEFAULT CHARSET=utf8  
    24. 1 row in set (0.00 sec)  
    25.   
    26. mysql> insert into payment_myisam select * from payment;  
    27. Query OK, 16049 rows affected (0.10 sec)  
    28. Records: 16049  Duplicates: 0  Warnings: 0  

     
    1. mysql> select count(*) from payment_myisam;
    2. +----------+
    3. | count(*) |
    4. +----------+
    5. | 16049 |
    6. +----------+
    7. 1 row in set (0.01 sec)
    8. mysql> show profiles;
    9. | 23 | 0.09449600 | insert into payment_myisam select * from payment |
    10. | 24 | 0.00023500 | select count(*) from payment_myisam |
    11. 15 rows in set (0.00 sec)
    1. mysql> select count(*) from payment_myisam;  
    2. +----------+  
    3. | count(*) |  
    4. +----------+  
    5. |    16049 |  
    6. +----------+  
    7. 1 row in set (0.01 sec)  
    8.   
    9. mysql> show profiles;  
    10.                                                                                                                                                                           
    11. |       23 | 0.09449600 | insert into payment_myisam select * from payment                                                                                                                                                                                                                                        |  
    12. |       24 | 0.00023500 | select count(*) from payment_myisam                                                                                                                                                                                                                                                     |  
    13.   
    14. 15 rows in set (0.00 sec)  

     
    1. mysql> show profile for query 24;
    2. +--------------------------------+----------+
    3. | Status | Duration |
    4. +--------------------------------+----------+
    5. | starting | 0.000026 |
    6. | Waiting for query cache lock | 0.000003 |
    7. | checking query cache for query | 0.000037 |
    8. | checking permissions | 0.000006 |
    9. | Opening tables | 0.000015 |
    10. | System lock | 0.000009 |
    11. | Waiting for query cache lock | 0.000019 |
    12. | init | 0.000011 |
    13. | optimizing | 0.000006 |
    14. | executing | 0.000006 |
    15. | end | 0.000000 |
    16. | query end | 0.000001 |
    17. | closing tables | 0.000008 |
    18. | freeing items | 0.000019 |
    19. | Waiting for query cache lock | 0.000008 |
    20. | freeing items | 0.000013 |
    21. | Waiting for query cache lock | 0.000008 |
    22. | freeing items | 0.000008 |
    23. | storing result in query cache | 0.000015 |
    24. | logging slow query | 0.000008 |
    25. | cleaning up | 0.000009 |
    26. +--------------------------------+----------+
  • 相关阅读:
    华为精益敏捷专家:DevOps转型中的那些坑
    极致进化-敏捷进化型企业的未来畅想
    DevOps的工程化
    京东精益敏捷教练分享:敏捷助力产品创新!
    敏捷开发进度管理之燃尽图
    手把手教你进行Scrapy中item类的实例化操作
    手把手教你使用ADB卸载手机内置App软件
    手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
    手把手教你利用Pyecharts库对IP代理数据进行数据可视化分析
    手把手教你使用Python爬取西刺代理数据(下篇)
  • 原文地址:https://www.cnblogs.com/jpfss/p/9214545.html
Copyright © 2011-2022 走看看