mysql 的 sql 性能分析器主要用途是显示 sql 执行的整个过程中各项资源的使用情况。分析器可以更好的展示出不良 SQL 的性能问题所在。 
下面我们举例介绍一下 MySQL SQL Profiler 的使用方法:

  • 首先,开启 MySQL SQL Profiler

mysql> SELECT @@profiling; 
+-------------+ 
| @@profiling | 
+-------------+ 
| 0 | 
+-------------+ 
1 row in set (0.00 sec) 
mysql> SET profiling = 1; 
Query OK, 0 rows affected (0.00 sec) 
mysql> SELECT @@profiling; 
+-------------+ 
| @@profiling | 
+-------------+ 
| 1 | 
+-------------+ 
1 row in set (0.00 sec) 
默认情况下 profiling 的值为 0 表示 MySQL SQL Profiler 处于 OFF 状态,开启 SQL 性能分析器后 profiling 的值为 1.

  • 通过 sql 性能分析器,我们来对比一下 下列语句前后 2 次执行过程的差异,对我们了解 sql 的详细执行过程是非常有帮助的。

mysql> create table t_engines select * from t_engines1; 
Query OK, 57344 rows affected (0.10 sec) 
Records: 57344 Duplicates: 0 Warnings: 0 
mysql> select count(*) from t_engines; 
+----------+ 
| count(*) | 
+----------+ 
| 57344 | 
+----------+ 
1 row in set (0.00 sec) 
mysql> select count(*) from t_engines; 
+----------+ 
| count(*) | 
+----------+ 
| 57344 | 
+----------+ 
1 row in set (0.00 sec) 
mysql> SHOW PROFILES; 
+----------+------------+-------------------------------------------------+ 
| Query_ID | Duration | Query | 
+----------+------------+-------------------------------------------------+ 
| 26 | 0.10213775 | create table t_engines select * from t_engines1 | 
| 27 | 0.00032775 | select count(*) from t_engines | 
| 28 | 0.00003850 | select count(*) from t_engines | 
+----------+------------+-------------------------------------------------+ 
15 rows in set (0.01 sec)
mysql> SHOW PROFILE FOR QUERY 27; 
+--------------------------------+------------+ 
| Status | Duration | 
+--------------------------------+------------+ 
| (initialization) | 0.00000425 | 
| checking query cache for query | 0.00004050 | 
| checking permissions | 0.00001050 | 
| Opening tables | 0.00018250 | 
| System lock | 0.00000450 | 
| Table lock | 0.00001775 | 
| init | 0.00001075 | 
| optimizing | 0.00000550 | 
| executing | 0.00002775 | 
| end | 0.00000450 | 
| query end | 0.00000325 | 
| storing result in query cache | 0.00000400 | 
| freeing items | 0.00000400 | 
| closing tables | 0.00000500 | 
| logging slow query | 0.00000300 | 
+--------------------------------+------------+ 
15 rows in set (0.00 sec) 
mysql> SHOW PROFILE FOR QUERY 28; 
+-------------------------------------+------------+ 
| Status | Duration | 
+-------------------------------------+------------+ 
| (initialization) | 0.00000350 | 
| checking query cache for query | 0.00000750 | 
| checking privileges on cached query | 0.00000500 | 
| checking permissions | 0.00000525 | 
| sending cached result to client | 0.00001275 | 
| logging slow query | 0.00000450 | 
+-------------------------------------+------------+ 
6 rows in set (0.00 sec)
mysql> SELECT sum( FORMAT(DURATION, 6)) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID =27 ORDER BY SEQ; 
+----------+ 
| DURATION | 
+----------+ 
| 0.000326 | 
+----------+ 
1 row in set (0.00 sec) 
mysql> SELECT sum( FORMAT(DURATION, 6)) AS DURATION FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID =28 ORDER BY SEQ; 
+----------+ 
| DURATION | 
+----------+ 
| 0.000039 | 
+----------+ 
1 row in set (0.00 sec) 
mysql> 
从上面的例子中我们可以清晰的看出 2 次执行 count 语句的差别, SHOW PROFILE FOR QUERY 27 展现的是第一次 count 统计的执行过程,包含了 Opening tables 、 Table lock 等操作 。而 SHOW PROFILE FOR QUERY 28 展示了第二次 count 统计的执行过程 , 第二次 count 直接从查询缓存中返回 count 统计结果,通过对比 2 次统计的总执行时间发现,缓存读的速度接近物理读的 10 倍。通过使用 SQL 性能分析器可以帮助我们对一些比较难以确定性能问题的 SQL 进行诊断,找出问题根源。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93470/showart_2002151.html

  发表

[MySQL优化] -- 如何使用SQL Profiler 性能分析器的更多相关文章

  1. [MySQL优化] -- 如何查找SQL效率地下的原因

    [MySQL优化] -- 如何查找SQL效率地下的原因   来源: ChinaUnix博客 日期: 2009.07.20 16:12 (共有条评论) 我要评论       查询到效率低的 SQL 语句 ...

  2. paip.提升性能---mysql 优化cpu多核以及lan性能的关系.

    paip.提升性能---mysql 优化cpu多核以及lan性能的关系. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:/ ...

  3. Mysql性能优化一:SQL语句性能优化

    这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 w ...

  4. mysql优化:explain分析sql语句执行效率

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

  5. mysql优化方案之sql优化

    优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先 ...

  6. mysql优化–explain分析sql语句执行效率

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

  7. mysql 优化(包含sql语句的书写)

    http://blog.chinaunix.net/uid-11640640-id-3426908.html  mysql性能优化-慢查询分析.优化索引和配置 2012-11-30 15:18:42 ...

  8. MySql优化-你的SQL命中索引了吗

    在项目开发中SQL是必不可少的,表索也一样.这些SQL的运行性能不知道吗?有多少是命中了索引的?命中哪个索引?索引中有哪个是无效索引?这些无效索引是否会影响系统的性能?带着这些问题我们一起来学习一下. ...

  9. Mysql优化_内置profiling性能分析工具

    如果要进行SQL的调优优化和排查,第一步是先让故障重现,但是这个并不是这一分钟有问题,下一秒就OK.一般的企业一般是DBA数据库工程师从监控里找到问题.DBA会告诉我们让我们来排查问题,那么可能很多种 ...

随机推荐

  1. python解析html

    *参考 推荐BeautifulSoup http://blog.csdn.net/abclixu123/article/details/38502993 http://www.cnblogs.com/ ...

  2. C# lambda查询带返回值

    问题来源: <深入理解C#(第3版)> 11页 具体如下: var lists=new List<string>{"111","222" ...

  3. storm并行度核心概念介绍剖析

    一.Storm的并行介绍 并行意味着多个任务在不同的节点上,且每个节点都可独立运行,并且相互之间没有依赖. 而在storm上,storm提交的jobs(任务)通过nimbus分发到多个supervis ...

  4. NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通

    NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通直接修改网段的话,会登录不上去,解决方法:设置>网络适配器>高级>生成mac地址重新登陆即 ...

  5. 二、python数据类型、字符编码、文件处理

    一. 前言 1. 什么是数据: x = 10,10就是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的, 不同的状态就应该用不同类型的数据去表示 3. 数据类型 数字(整型.长整型 ...

  6. MySQL 聚合函数(一)聚合(组合)函数概述

    MySQL版本:5.7+ 本节介绍对值的集合进行操作的组合(聚合)函数.翻译自:Aggregate (GROUP BY) Function Descriptions 一.MySQL 5.7中的聚合函数 ...

  7. beego 参数配置

    详细配置请参考:https://godoc.org/github.com/astaxie/beego#pkg-constants. App配置 AppName 应用名称,默认是 beego.通过bee ...

  8. Js 判断数组中是否包含某个值

    includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false. JavaScript Array includes() 方法

  9. Django rest-framework框架-解析器

    解析器: 开始: django: request.POST/ request.body 满足一下两个要求POST中才有值 1. 如果请求头中的 Content-Type: application/x- ...

  10. IOI2020只因训队作业胡做

    w a r n i n g ! 意 识 流 警 告 !!1 不想一个个发了,干脆直接发个合集得了qwq 感觉这辈子都做不完了\(Q\omega Q\) CF516D 写过题解了 CF505E 写过题解 ...