查看mysql语句运行时间

方法一: show profiles。

1. Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。

     Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,

     但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。

     查看数据库版本方法:show variables like "%version%";  或者  select version();

    mysql show variables like I Variable name versxon versxon versxon versxon 5 rows in commen compile machine compile os set (0.00 sec) Value 5.1.41-3ubuntu12. un u i486 debian- Iinux-gnu 10-10g I mysql> select version(); 1 version ( ) 5.1.41-3ubuntu12. row in set (0.00 10-10g I sec)

2.确定支持show profile 后,查看profile是否开启,数据库默认是不开启的。变量profiling是用户变量,每次都得重新启用。

   查看方法: show variables like "%pro%";

   设置开启方法: set profiling = 1;

     mysql> show variables I Variable name profiling like profiling history size I protocol version I slave compressed_protocol 4 rows in set (0.00 sec) mysql> set rofilin Value OFF 15 10 OFF Query OK, 0 rows affected (0.00 sec)

   再次查看show variables like "%pro%"; 已经是开启的状态了。

3.可以开始执行一些想要分析的sql语句了,执行完后,show profiles;即可查看所有sql的总的执行时间。

      mysql> show profiles; Il 21 31 41 51 Query ID Duration o. 00070100 o. 00017700 0.00038000 | 0.00036700 o. 00011900 Query show variables like select 1 select 1 from seven user select uid from seven user select * from seven user 5 rows in set (0.00 sec)  

  show profile for query 1 即可查看第1个sql语句的执行的各个操作的耗时详情。

      mysql> show Status starting profile Opening tables System lock Table lock init optimizing statistics preparxng executing Sending data end query end freeing items removing tmp table closing tables logging slow query cleaning up 17 rows in set (0.00 for query 1; Duration 0.000051 .000041 | o o. 000010 .000012 | o 000012 | o. .000010 | o o. 000013 .000014 | o 000419 | o. .000024 | o o. 000011 .000009 | o 000026 | o. .000020 | o o. 000010 .000009 | o sec)

 show profile cpu, block io, memory,swaps,context switches,source for query 6;可以查看出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等

 show profile all for query 6 查看第6条语句的所有的执行信息。

 测试完毕后,关闭参数:

mysql> set profiling=0

方法二: timestampdiff来查看执行时间。

这种方法有一点要注意,就是三条sql语句要尽量连一起执行,不然误差太大,根本不准

set @d=now();
select * from comment;
select timestampdiff(second,@d,now());

如果是用命令行来执行的话,有一点要注意,就是在select timestampdiff(second,@d,now());后面,一定要多copy一个空行,不然最后一个sql要你自己按回车执行,这样就不准了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值