mysql 获取show 结果_[mysql]查询截取分析-Show Profile

Show Profile

是什么

MySQL提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量.

默认情况下,参数处于关闭状态,并保存最近15次的运行结果

分析步骤

1是否支持,查看当前mysql版本是否支持

mysql> show variables like 'profiling%';

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

| Variable_name | Value |

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

| profiling | OFF |

| profiling_history_size | 15 |

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

2 rows in set (0.00 sec)

2开启功能

mysql> set profiling = on;

Query OK, 0 rows affected, 1 warning (0.00 sec)

3运行sql

SELECT * FROM `emp` GROUP BY `id`%10 LIMIT 150000;

SELECT * FROM `emp` GROUP BY `id`%20 ORDER BY 5;

4查看结果,show profile

mysql> show profiles;

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

| Query_ID | Duration | Query |

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

| 1 | 0.47962675 | SELECT * FROM `emp` GROUP BY `id`%10 LIMIT 150000 |

| 2 | 0.50838825 | SELECT * FROM `emp` GROUP BY `id`%20 ORDER BY 5 |

| 3 | 0.49408000 | SELECT * FROM `emp` GROUP BY `id`%20 ORDER BY 5 |

| 4 | 0.52304925 | SELECT * FROM `emp` GROUP BY `id`%20 ORDER BY 5 |

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

4 rows in set, 1 warning (0.00 sec)

5诊断SQL

mysql> SHOW PROFILE cpu,block io FOR QUERY 4;

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

| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |

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

| starting | 0.000095 | 0.000000 | 0.000000 | 0 | 0 |

| checking permissions | 0.000007 | 0.000000 | 0.000000 | 0 | 0 |

| Opening tables | 0.000022 | 0.000000 | 0.000000 | 0 | 0 |

| init | 0.000029 | 0.000000 | 0.000000 | 0 | 0 |

| System lock | 0.000016 | 0.000000 | 0.000000 | 0 | 0 |

| optimizing | 0.000009 | 0.000000 | 0.000000 | 0 | 0 |

| statistics | 0.000019 | 0.000000 | 0.000000 | 0 | 0 |

| preparing | 0.000010 | 0.000000 | 0.000000 | 0 | 0 |

| Creating tmp table | 0.000035 | 0.000000 | 0.000000 | 0 | 0 |

| Sorting result | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |

| executing | 0.000002 | 0.000000 | 0.000000 | 0 | 0 |

| Sending data | 0.522402 | 0.520000 | 0.000000 | 0 | 0 |

| Creating sort index | 0.000068 | 0.000000 | 0.000000 | 0 | 0 |

| end | 0.000005 | 0.000000 | 0.000000 | 0 | 0 |

| query end | 0.000008 | 0.000000 | 0.000000 | 0 | 0 |

| removing tmp table | 0.000007 | 0.000000 | 0.000000 | 0 | 0 |

| query end | 0.000003 | 0.000000 | 0.000000 | 0 | 0 |

| closing tables | 0.000008 | 0.000000 | 0.000000 | 0 | 0 |

| freeing items | 0.000290 | 0.000000 | 0.000000 | 0 | 0 |

| cleaning up | 0.000014 | 0.000000 | 0.000000 | 0 | 0 |

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

20 rows in set, 1 warning (0.00 sec)

show profile查询参数备注:

ALL:显示所有的开销信息。

BLOCK IO:显示块IO相关开销CONTEXT SWITCHES:上下文切换相关开销。CPU:显示CPU相关开销信息IPC:显示发送和接收相关开销信息。MEMORY:显示内存相关开销信息。PAGE FAULTS:显示页面错误相关开销信息。SOURCE:显示和Source_function,Source_file,Source_line相关信息SWAPS`:显示交换次数相关开销的信息。

6日常开发需要注意的结论(不要出现下面的情况)

converting HEAP to MyISAM:查询结果太大,内存都不够用了,往磁盘上搬了。

Creating tmp table:创建临时表:

拷贝数据到临时表

用完再删除

Copying to tmp table on disk:把内存中的临时表复制到磁盘,危险!!!

locked:死锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值