Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。
查看一下我的数据库版本
MySQL> Select version();
+---------------------+
| version() |
+---------------------+
| 5.0.82-community-nt |
+---------------------+
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)
执行下面的查询
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;
+----------------------+----------+
| 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 |
| 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 |
+----------------------+----------+----------+------------+--------------+------
---------+
| 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 |
| 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 |
| 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
mysql show profiles 使用分析sql 性能的更多相关文章
-
mysql show profiles使用分析sql性能
mysql show profiles使用分析sql性能 Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看一下我的数据库版本 mysql> ...
-
使用show profiles分析SQL性能
如何查看执行SQL的耗时 使用show profiles分析sql性能. Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看数据库版本 mysql ...
-
【MS SQL】通过执行计划来分析SQL性能
原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO O ...
-
mysql 分析3使用分析sql 性能 show profiles ;
show variables like '%profiling%'; 查看状态 查看时间去哪了``` set profiling=1;// 打开 show profiles; 查看执行过的 ...
-
MySQL高级篇 | 分析sql性能
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越 ...
-
使用Oracle执行计划分析SQL性能
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述.即就是对一个查询任务,做出一份怎样去完成任务的详细方案. 如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的 ...
-
MySQL字符集不一致导致查询SQL性能问题
今天做了一个MySQL数据库中的SQL优化. 结论是关联字段字符集不同,导致索引不可用. 查询的SQL如下: select `Alias`.`Grade`, `Alias`.`id`, `Alias` ...
-
MySQL进阶篇(01):基于多个维度,分析服务器性能
本文源码:GitHub·点这里 || GitEE·点这里 一.服务器性能简介 1.性能定义 服务器性能优化是一项非常艰巨的任务,当然也是很难处理的问题,在写这篇文章的时候,特意请教下运维大佬,硬件工程 ...
-
Oracle DB SQL 性能分析器
• 确定使用SQL 性能分析器的优点 • 描述SQL 性能分析器工作流阶段 • 使用SQL 性能分析器确定数据库更改所带来的性能改进 SQL 性能分析器:概览 • 11g 的新增功能 • 目标用户:D ...
随机推荐
-
Outfit7 庆祝其开发工作大获丰收
走不寻常路之经验总结 每位合格应用开发人员都拥有相同的目标:灵机一动,构建独创性原型,克服各种困难,最终吸引投资者将其想法推向市场. 名声.财富以及构建更多应用的机会将接踵而至. 焦虑.改善和重复是开 ...
-
linq之let子句
在Linq查询中Let子句可以创建一个新的范围变量,并使用该变量保存表达式的结果. 看下面的例子: private void LetQuery() { List<UserBaseInfo> ...
-
Windows桌面开发者的必备软件
如果你新安装好了一台WindowsXP或者Windows7的机器,作为一个开发人员,我建议安装下面这些软件: 1,WinMerge. http://winmerge.org/ 2, Lua for w ...
-
POJ 3318 Matrix Multiplication(矩阵乘法)
题目链接 题意 : 给你三个n维矩阵,让你判断A*B是否等于C. 思路 :优化将二维转化成一维的.随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小. #inc ...
-
Python模拟键盘输入和鼠标操作
Python模拟键盘输入和鼠标操作 一.Python键盘输入模拟: import win32api import win32con win32api.keybd_event(17,0,0,0) #c ...
-
Linux系统管理员必备的监控工具(88款)
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
-
.NET 通用高扩展性的细粒度权限管理架构(webApi/Mvc)
一. 权限场景分析: 1. 系统具有角色概念, 部门概念, 且都具有相应不同的权限 2. 用户具有多个角色, 多个部门等关系, 并且能给单个用户指派独有的权限 3. 具有细粒度权限控制到资源的RBAC ...
-
201521123014 《Java程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 数据库是为了实现一定目的按某种规则组织起来的"数据"的"集合".常见的数 ...
-
设计模式-发布订阅模式(javaScript)
1. 前言 2. 什么是发布订阅模式 3. 发布订阅优缺点 4. 举例 4. 总结 1. 前言 发布订阅者模式是为了发布者和订阅者之间避免产生依赖关系,发布订阅者之间的订阅关系由一个中介列表来维护.发 ...
-
yum仓库源搭建
本地yum源搭建 cd源 mount /dev/sr0 /mnt vim /etc/yum.repos.d/base.repo [centos-base]name=centos7#baseurl=f ...