使用mysql profiles 来查看sql 语句执行计划

转载 2015年07月07日 09:31:40

 要使用该功能,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)

相关文章推荐

Undocumented Way–通过手工创建sql profiles固定执行计划进行SQL调优

一直以来对SQL profiles都是爱恨有加。SQL profiles的灵活和一些特性(比如对SQL语句级的类似cursor_sharing功能,对非绑定变量环境非常实用),在不很多不能修改应用代码...

Oracle查看SQL语句的执行计划

原文地址:Oracle查看SQL语句的执行计划 作者:frankfan126 Oracle诊断或调优经常需要做的就是查看SQL语句的执行计划,很多时候我们需要得到sql语句在不同场景、不同时间段的执...
  • G0_hw
  • G0_hw
  • 2017年04月09日 16:25
  • 458

【Oracle】三种方式查看SQL语句的执行计划

查看执行计划的方式有三种: EXPLAN PLAN 、V$SQL_PLAN 、SQL*PLUS AUTOTRACE1.EXPLAN PLAN: 显示执行相应语句时可以使用的理论计划 读取执行计划...

追踪SQL语句,查看执行计划系列

如何查看执行计划        执行计划是SQL调优的最基本方法,查看执行计划的方法很多,不过我经常偷懒直接用PLSQL DEV来F5一下就完事了,这样下去很多能力都要退化了,下面看一下有哪些办法...

hive高阶1--sql和hive语句执行顺序、explain查看执行计划、group by生成MR

hive语句执行顺序msyql语句执行顺序代码写的顺序:select ... from... where.... group by... having... order by.. 或者 fr...

使用 EXPLAIN PLAN 获取SQL语句执行计划

SQL查询语句的性能从一定程度上影响整个数据库的性能。很多情况下,数据库性能的低下差不多都是不良SQL语句所引起。而SQL语句的执行 计划则决定了SQL语句将会采用何种方式从数据库提取数据并返回给客户...

如何使用SQLPLUS分析SQL语句(查询执行计划跟踪)

方法一:autotrace 1,  connect sys/密码 as sysdba,在sys用户下运行$ORACLE_HOME/sqlplus/admin/plustrce.sql 这段sql...

使用 EXPLAIN PLAN 获取SQL语句执行计划

SQL查询语句的性能从一定程度上影响整个数据库的性能。很多情况下,数据库性能的低下差不多都是不良SQL语句所引起。而SQL语句的执行 计划则决定了SQL语句将会采用何种方式从数据库提取数据并返回给客...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用mysql profiles 来查看sql 语句执行计划
举报原因:
原因补充:

(最多只允许输入30个字)