sql 查询执行的详细时间profile

1.查看profile的设置

  SHOW VARIABLES LIKE ‘%profil%‘

 结果如下:profiling OFF 为关闭状态

2.开启profile

  SET profiling=1

结果:

3.执行需要执行的sql

explain   select*........

4.查询执行的sql

  SHOW PROFILES

结果:

5.查看需要的sql执行详细信息

  SHOW PROFILE FOR QUERY 308

结果:

  SHOW profile cpu,MEMORY FOR QUERY 308

结果:

  SHOW profile ALL FOR QUERY 308

结果:

status:


hecking table


正在检查数据表(这是自动的)。


Closing tables


正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。


Connect Out


复制从服务器正在连接主服务器


Copying to tmp table on disk


由于临时结果集大于 tmp_table_size ,正在将临时表从内存存储转为磁盘存储以此节省内存


Creating tmp table


正在创建临时表以存放部分查询结果


deleting from main table


服务器正在执行多表删除中的第一部分,刚删除第一个表。


deleting from reference tables


服务器正在执行多表删除中的第二部分,正在删除其他 表的记录。


Flushing tables


正在执行 FLUSH TABLES ,等待其他线程关闭数据表


Killed


发送了一个 kill 请求给某线程,那么这个线程将会检查 kill 标志位,同时会放弃下一个 kill 请求。 MySQL 会在每次的主循环中检查 kill 标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么 kill 请求会在锁释放时马上生效。


Locked


被其他查询锁住了


Sending data


正在处理 SELECT 查询的记录,同时正在把结果发送给客户端


Sorting for group


正在为 GROUP BY 做排序


Sorting for order


正在为 ORDER BY 做排序


Opening tables


这个过程应该会很快,除非受到其他因素的干扰。例如,在执 ALTER TABLE 或 LOCK TABLE 语句行完以前,数据表无法被其他线程打开。 正尝试打开一个表


Removing duplicates


正在执行一个 SELECT DISTINCT 方式的查询,但是 MySQL 无法在前一个阶段优化掉那些重复的记录。因此, MySQL 需要再次去掉重复的记录,然后再把结果发送给客户端


Reopen table


获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表


Repair by sorting


修复指令正在排序以创建索引


Repair with keycache


修复指令正在利用索引缓存一个一个地创建新索引。它会比 Repair by sorting 慢些


Searching rows for update


正在讲符合条件的记录找出来以备更新。它必须在 UPDATE 要修改相关的记录之前就完成了


Sleeping


正在等待客户端发送新请求


System lock


正在等待取得一个外部的系统锁。如果当前没有运行多个 mysqld 服务器同时请求同一个表,那么可以通过增加 --skip-external-locking 参数来禁止外部系统锁


Upgrading lock


INSERT DELAYED 正在尝试取得一个锁表以插入新记录


Updating


正在搜索匹配的记录,并且修改它们


User Lock


正在等待 GET_LOCK()


Waiting for tables


该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE


waiting for handler insert


INSERT DELAYED 已经处理完了所有待处理的插入操作,正在等待新的请求

 6.关闭profile分析

  SET profiling=0

结果:

时间: 2024-09-29 01:37:07

sql 查询执行的详细时间profile的相关文章

SQL查询执行过程

MYSQL查询执行过程 客户端向服务器发送请求 服务器查询缓存,缓存中命中则结束,将结果返回客户端(返回前会检查用户权限),否则继续下边步骤 服务器端进行SQL解析.预处理,再由优化器生成对应的执行计划 根据执行计划调用存储引擎的API执行查询 将结果返回客户端 一.查询缓存 如果一条SQL语句以select开头,MySQL服务器将会尝试先在缓存中查询.每个cache都是以SQL文本做为key的,所以如果SQL语句中大小写不同也无法命中. 设置:my.cnf(Linuxe)/my.ini(Win

SQL查询出当前服务器时间是否在表T1时间段内,如果有则选择出

表T1 开始 时间         结束时间          09:00:00          12:00:00      14:00:00          17:00:00 查询出当前服务器时间是否在表T1时间段内,如果有则选择出 选出的sql结果集如下,求SQL,  注:SQL2000环境 开始 时间         结束时间           14:00:00          17:00:00 方法一: DECLARE @t TABLE (     beginTime CHAR(

Hibernate 的原生 SQL 查询

Hibernate除了支持HQL查询外,还支持原生SQL查询.         对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该接口是Query接口的子接口.         执行SQL查询步骤如下:         1.获取Hibernate Session对象         2.编写SQL语句         3.通过Session的createSQLQuery方法创建查询对象         4.调用SQ

Hibernate SQL查询 addScalar()或addEntity()

Hibernate除了支持HQL查询外,还支持原生SQL查询.          对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该接口是Query接口的子接口.          执行SQL查询步骤如下:          1.获取Hibernate Session对象          2.编写SQL语句          3.通过Session的createSQLQuery方法创建查询对象         

hibernate使用原生SQL查询返回结果集的处理

今天没事的时候,看到公司框架里有一个用原生SQL写的函数,说实在以前自己也干过这事,但好久都没有用,都忘得差不多了,现在基本都是用的hql语句来查询结果.hibernate中使用createSQLQuery拉来来实现SQL语句的查询,具体用法:session.createSQLQuery(sql),对于用SQL返回的结果集是一个什么样的结果集都毫无记忆.自己查了下,才知道,原来是返回一个Object类型数组的list集合,而其中Object类型的数组里的值则与sql语句中的查询项相对应,如果是s

Hibernate SQLQuery 原生SQL 查询及返回结果集处理-1

第一篇:官方文档的处理方法,摘自官方 在迁移原先用JDBC/SQL实现的系统,难免需要采用hibernat native sql支持. 1.使用SQLQuery hibernate对原生SQL查询执行的控制是通过SQLQuery接口进行的. Session.createSQLQuery(); 1.1标量查询 最基本的SQL查询就是获得一个标量(数值)的列表. sess.createSQLQuery("SELECT * FROM CATS").list(); sess.createSQL

查询oracle 数据库 SQL语句执行情况

1.查看总消耗时间最多的前10条SQL语句 select *  from (select v.sql_id,  v.child_number,  v.sql_text,  v.elapsed_time,  v.cpu_time,  v.disk_reads,  rank() over(order by v.elapsed_time desc) elapsed_rank  from v$sql v) a  where elapsed_rank <= 10; 2.查看CPU消耗时间最多的前10条SQ

spring MVC +freemarker + easyui 实现sql查询和执行小工具总结

项目中,有时候线下不能方便的连接项目中的数据源时刻,大部分的问题定位和处理都会存在难度,有时候,一个小工具就能实时的查询和执行当前对应的数据源的库.下面,就本人在项目中实际开发使用的小工具,实时的介绍开发使用过程.首先看图:大概的操作界面,基本使用easyui组件实现,欢迎大家吐槽: 界面包含了基本的sql查询 和 sql执行的小功能,把查询和执行分开,也是为了后台实现的需要,以及权限控制的考虑,毕竟执行的操作,会影响到系统的数据问题.查询和执行的菜单,是用easyui的手风琴式的菜单处理的.两

在MySQL中使用explain查询SQL的执行计划

1.什么是MySQL执行计划 要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解. MySQL本身的功能架构分为三个部分,分别是 应用层.逻辑层.物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的. 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的. 逻辑层,主要负责查询处理.事务管理等其他数据库功能处理,以查询为例. 首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第