首页 数据库 mysql教程 mysql show profiles使用分析sql性能_MySQL

mysql show profiles使用分析sql性能_MySQL

Jun 01, 2016 pm 01:41 PM
sql

bitsCN.com
mysql show profiles使用分析sql性能 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  作者 aeolus_pu bitsCN.com

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Hibernate 框架中 HQL 和 SQL 的区别是什么? Hibernate 框架中 HQL 和 SQL 的区别是什么? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中进行比较:HQL(1.面向对象语法,2.数据库无关的查询,3.类型安全),而SQL直接操作数据库(1.与数据库无关的标准,2.可执行复杂查询和数据操作)。

Oracle SQL中除法运算的用法 Oracle SQL中除法运算的用法 Mar 10, 2024 pm 03:06 PM

《OracleSQL中除法运算的用法》在OracleSQL中,除法运算是常见的数学运算之一。在数据查询和处理过程中,除法运算可以帮助我们计算字段之间的比例或者得出特定数值的逻辑关系。本文将介绍OracleSQL中除法运算的用法,并提供具体的代码示例。一、OracleSQL中除法运算的两种方式在OracleSQL中,除法运算可以使用两种不同的方式进行

Oracle和DB2的SQL语法比较与区别 Oracle和DB2的SQL语法比较与区别 Mar 11, 2024 pm 12:09 PM

Oracle和DB2是两个常用的关系型数据库管理系统,它们都有自己独特的SQL语法和特点。本文将针对Oracle和DB2的SQL语法进行比较与区别,并提供具体的代码示例。数据库连接在Oracle中,使用以下语句连接数据库:CONNECTusername/password@database而在DB2中,连接数据库的语句如下:CONNECTTOdataba

SQL中的identity属性是什么意思? SQL中的identity属性是什么意思? Feb 19, 2024 am 11:24 AM

SQL中的Identity是什么,需要具体代码示例在SQL中,Identity是一种用于生成自增数字的特殊数据类型,它常用于唯一标识表中的每一行数据。Identity列通常与主键列配合使用,可以确保每条记录都有一个独一无二的标识符。本文将详细介绍Identity的使用方式以及一些实际的代码示例。Identity的基本使用方式在创建表时,可以使用Identit

详解MyBatis动态SQL标签中的Set标签功能 详解MyBatis动态SQL标签中的Set标签功能 Feb 26, 2024 pm 07:48 PM

MyBatis动态SQL标签解读:Set标签用法详解MyBatis是一个优秀的持久层框架,它提供了丰富的动态SQL标签,可以灵活地构建数据库操作语句。其中,Set标签是用于生成UPDATE语句中SET子句的标签,在更新操作中非常常用。本文将详细解读MyBatis中Set标签的用法,以及通过具体的代码示例来演示其功能。什么是Set标签Set标签用于MyBati

java怎么通过MySQL驱动拦截器实现执行sql耗时计算 java怎么通过MySQL驱动拦截器实现执行sql耗时计算 May 27, 2023 pm 01:10 PM

背景公司的一个需求,公司既有的链路追踪日志组件要支持MySQL的sql执行时间打印,要实现链路追踪常用的手段就是实现第三方框架或工具提供的拦截器接口或者是过滤器接口,对于MySQL也不例外,实际上就是实现了MySQL驱动的拦截器接口而已。具体实现MySQL的渠道有不同的版本,不同版本的拦截器接口是不同的,所以要针对你所使用的不同版本的MySQL驱动去实现响应的拦截器,接下来分别介绍下MySQL渠道5,6,8版本的实现方式。MySQL5这里以MySQL渠道5.1.18版本为例实现,实现Statem

SQL出现5120错误怎么解决 SQL出现5120错误怎么解决 Mar 06, 2024 pm 04:33 PM

解决办法:1、检查登录用户是否具有足够的权限来访问或操作该数据库,确保该用户具有正确的权限;2、检查SQL Server服务的帐户是否具有访问指定文件或文件夹的权限,确保该帐户具有足够的权限来读取和写入该文件或文件夹;3、检查指定的数据库文件是否已被其他进程打开或锁定,尝试关闭或释放该文件,并重新运行查询;4、尝试以管理员身份运行Management Studio等等。

Springboot+Mybatis-plus不使用SQL语句进行多表添加怎么实现 Springboot+Mybatis-plus不使用SQL语句进行多表添加怎么实现 Jun 02, 2023 am 11:07 AM

在Springboot+Mybatis-plus不使用SQL语句进行多表添加操作我所遇到的问题准备工作在测试环境下模拟思维分解一下:创建出一个带有参数的BrandDTO对象模拟对后台传递参数我所遇到的问题我们都知道,在我们使用Mybatis-plus中进行多表操作是极其困难的,如果你不使用Mybatis-plus-join这一类的工具,你只能去配置对应的Mapper.xml文件,配置又臭又长的ResultMap,然后再去写对应的sql语句,这种方法虽然看上去很麻烦,但具有很高的灵活性,可以让我们

See all articles