zoukankan      html  css  js  c++  java
  • mysql show profiles使用分析sql性能


    mysql show profiles使用分析sql性能

     
    Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。
     
    查看一下我的数据库版本
    mysql> 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 等信息
     
    具体信息可以参考http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html
  • 相关阅读:
    cmd utf-8 just run:CHCP 65001
    PHP5已注册的hash函数
    php扩展开发笔记1
    configure: error: cannot find neither zip nor jar, cannot continue
    configure: error: cannot compute suffix of object files: cannot compile
    configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to b
    /usr/bin/ld: crt1.o: No such file: No such file or directory
    近两周工作总结
    我觉得好用的VS扩展(不定期更新)
    vmware虚拟机无法ping通宿主机,但宿主机可以ping通虚拟机
  • 原文地址:https://www.cnblogs.com/grimm/p/6731746.html
Copyright © 2011-2022 走看看