zoukankan      html  css  js  c++  java
  • [转]使用mysql profiles 来查看sql 语句执行计划

    From : http://blog.csdn.net/radkitty/article/details/4632289

    要使用该功能,mysql的版本必须在5.0.37版本以上。否则只能使用explain 的方式来检查。

    profiling 功能可以了解到cpu io 等更详细的信息。

    show profile 的格式如下:

    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

     

    默认方式下该功能是关闭的:

     mysql>select @@profiling;

    +-------------+
    | @@profiling |
    +-------------+
    |           0 |
    +-------------+
    1 row in set (0.00 sec)

     

    打开功能

    mysql>set profiling=1;

     

    +-------------+
    | @@profiling |
    +-------------+
    |           1 |
    +-------------+
    1 row in set (0.00 sec)

     

    输入需要执行的sql 语句:

    mysql>select count(*) from sysuser;

    mysql>select count(*) from sysuser;

     

    mysql> show profiles/G;
    *************************** 1. row ***************************

    Query_ID: 1
    Duration: 0.00007550
       Query: select count(*) from sysuser
    1 row in set (0.00 sec)

     

    通过指定的Query_ID 来查询指定的sql语句的执行信息:

    mysql> show profile for query 1;

    +--------------------------------+----------+
    | Status                         | Duration |
    +--------------------------------+----------+
    | starting                       | 0.000028 |
    | checking query cache for query | 0.000008 |
    | checking privileges on cached  | 0.000009 |
    | sending cached result to clien | 0.000023 |
    | logging slow query             | 0.000004 |
    | cleaning up                    | 0.000003 |
    +--------------------------------+----------+
    6 rows in set (0.00 sec)

     

    mysql> show profile cpu,block io for query 1;
    +--------------------------------+----------+----------+------------+--------------+---------------+
    | Status                         | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
    +--------------------------------+----------+----------+------------+--------------+---------------+
    | starting                       | 0.000028 |     NULL |       NULL |         NULL |          NULL |
    | checking query cache for query | 0.000008 |     NULL |       NULL |         NULL |          NULL |
    | checking privileges on cached  | 0.000009 |     NULL |       NULL |         NULL |          NULL |
    | sending cached result to clien | 0.000023 |     NULL |       NULL |         NULL |          NULL |
    | logging slow query             | 0.000004 |     NULL |       NULL |         NULL |          NULL |
    | cleaning up                    | 0.000003 |     NULL |       NULL |         NULL |          NULL |
    +--------------------------------+----------+----------+------------+--------------+---------------+
    6 rows in set (0.00 sec)

     

    如果不带for 参数则指列出最后一条语句的profile 信息:

    mysql> show profile cpu,block io for query 1;
    +--------------------------------+----------+----------+------------+--------------+---------------+

    | Status                         | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
    +--------------------------------+----------+----------+------------+--------------+---------------+
    | starting                       | 0.000028 |     NULL |       NULL |         NULL |          NULL |
    | checking query cache for query | 0.000008 |     NULL |       NULL |         NULL |          NULL |
    | checking privileges on cached  | 0.000009 |     NULL |       NULL |         NULL |          NULL |
    | sending cached result to clien | 0.000023 |     NULL |       NULL |         NULL |          NULL |
    | logging slow query             | 0.000004 |     NULL |       NULL |         NULL |          NULL |
    | cleaning up                    | 0.000003 |     NULL |       NULL |         NULL |          NULL |
    +--------------------------------+----------+----------+------------+--------------+---------------+
    6 rows in set (0.00 sec)

    关闭参数:

    mysql> set profiling=0

     

    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | profiling     | OFF   |
    +---------------+-------+
    1 row in set (0.00 sec)

  • 相关阅读:
    INewPolygonFeedback接口(实时显示所画多边形的面积)
    RichTextBox追加文本信息,并根据信息的多少自动下移
    Google tile和TMS的索引算法
    出差咸阳
    失败的 炸羊排
    年中总结
    Oracle 两个表之间的数据更新
    ArcEngine下,实现图形的擦除操作(Erase操作)
    C#中使用ListView动态添加数据不闪烁(转)
    出差略阳
  • 原文地址:https://www.cnblogs.com/Athrun/p/3342408.html
Copyright © 2011-2022 走看看