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)

  • 相关阅读:
    php 正则获取字符串中的汉字(去除字符串中除汉字外的所有字符)
    发送短信倒计时效果实现
    《JavaScript模式》第2章 基本技巧
    《JavaScript模式》第1章 简介
    点击元素,只有它的背景变色
    笔试题之优化代码
    jQuery实现一个全选复选框联动效果
    《深入浅出Node.js》第3章 异步I/O
    《深入浅出Node.js》第2章 模块机制
    《深入浅出Node.js》第1章 Node简介
  • 原文地址:https://www.cnblogs.com/Athrun/p/3342408.html
Copyright © 2011-2022 走看看