当前位置:  数据库>mysql

查看mysql语句运行时间的2种方法

    来源: 互联网  发布时间:2014-10-12

    本文导语:  网站运行很慢的时候,我就特别起知道为什么这么慢,所以我查啊查,数据库绝对是很重要的一部分,里面运行的sql是绝对不能放过的。平时做项目的时候,我也会注意sql语句的书写,写出一些高效的sql来,所以我会经常测试自...

网站运行很慢的时候,我就特别起知道为什么这么慢,所以我查啊查,数据库绝对是很重要的一部分,里面运行的sql是绝对不能放过的。平时做项目的时候,我也会注意sql语句的书写,写出一些高效的sql来,所以我会经常测试自己写的sql语句。我把我知道的二个方法,总结一下发出来。

一,show profiles 之类的语句来查看

1,查一下profile是不是打开了,默认是不打开的。

mysql> show profiles; 
Empty set (0.02 sec) 
mysql> show variables like "%pro%"; 
+---------------------------+-------+ 
| Variable_name | Value | 
+---------------------------+-------+ 
| profiling | OFF | 
| profiling_history_size | 15 | 
| protocol_version | 10 | 
| slave_compressed_protocol | OFF | 
+---------------------------+-------+ 
4 rows in set (0.00 sec)

我查看一下profiles里面没有东西,所以公司的电脑里面profile是没有打开的,我查看了一下mysql变量,果然是OFF的。

2,开启profile,然后测试

开启profile

mysql> set profiling=1; 
Query OK, 0 rows affected (0.00 sec)

测试如下:

mysql> show tables; 
+----------------+ 
| Tables_in_test | 
+----------------+ 
| aa | 
| bb | 
| comment | 
| string_test | 
| user | 
+----------------+ 
5 rows in set (0.00 sec) 
mysql> select * from aa; 
+----+------+------------+------+ 
| id | name | nname | sex | 
+----+------+------------+------+ 
| 2 | tank | bbbb,4bbbb | NULL | 
| 3 | zhang| 3,c,u | NULL | 
+----+------+------------+------+ 
2 rows in set (0.00 sec) 
mysql> update aa set name='d'; 
Query OK, 2 rows affected (0.00 sec) 
Rows matched: 2 Changed: 2 Warnings: 0 
mysql> delete from bb; 
Query OK, 2 rows affected (0.00 sec) 
mysql> show profiles; 
+----------+------------+------------------------+ 
| Query_ID | Duration | Query | 
+----------+------------+------------------------+ 
| 1 | 0.00054775 | show tables | 
| 2 | 0.00022400 | select * from aa | 
| 3 | 0.00026275 | update aa set name='d' | 
| 4 | 0.00043000 | delete from bb | 
+----------+------------+------------------------+ 
4 rows in set (0.00 sec) 
mysql> show profile; 
+----------------------+-----------+ 
| Status | Duration | 
+----------------------+-----------+ 
| (initialization) | 0.0000247 | 
| checking permissions | 0.0000077 | 
| Opening tables | 0.0000099 | 
| System lock | 0.000004 | 
| Table lock | 0.000005 | 
| init | 0.0003057 | 
| query end | 0.0000062 | 
| freeing items | 0.000057 | 
| closing tables | 0.000008 | 
| logging slow query | 0.0000015 | 
+----------------------+-----------+ 
10 rows in set (0.00 sec) 
mysql> show profile for query 1; 
+----------------------+-----------+ 
| Status | Duration | 
+----------------------+-----------+ 
| (initialization) | 0.000028 | 
| checking permissions | 0.000007 | 
| Opening tables | 0.0000939 | 
| System lock | 0.0000017 | 
| Table lock | 0.0000055 | 
| init | 0.000009 | 
| optimizing | 0.0000027 | 
| statistics | 0.0000085 | 
| preparing | 0.0000065 | 
| executing | 0.000004 | 
| checking permissions | 0.000258 | 
| Sending data | 0.000049 | 
| end | 0.0000037 | 
| query end | 0.0000027 | 
| freeing items | 0.0000307 | 
| closing tables | 0.0000032 | 
| removing tmp table | 0.0000275 | 
| closing tables | 0.0000037 | 
| logging slow query | 0.000002 | 
+----------------------+-----------+ 
19 rows in set (0.00 sec) 
mysql> show profile for query 3; 
+----------------------+-----------+ 
| Status | Duration | 
+----------------------+-----------+ 
| (initialization) | 0.0000475 | 
| checking permissions | 0.0000077 | 
| Opening tables | 0.000026 | 
| System lock | 0.0000042 | 
| Table lock | 0.0000045 | 
| init | 0.0000205 | 
| Updating | 0.0000787 | 
| end | 0.0000567 | 
| query end | 0.000004 | 
| freeing items | 0.0000067 | 
| closing tables | 0.000004 | 
| logging slow query | 0.000002 | 
+----------------------+-----------+ 
12 rows in set (0.00 sec)

二,timestampdiff来查看测试时间

mysql> set @d=now(); 
Query OK, 0 rows affected (0.00 sec) 
mysql> select * from comment; 
+------+-----+------+------------+---------------------+ 
| c_id | mid | name | content | datetime | 
+------+-----+------+------------+---------------------+ 
| 1 | 1 | ?? | 2222222211 | 2010-05-12 00:00:00 | 
| 2 | 1 | ?? | ????(??) | 2010-05-13 00:00:00 | 
| 3 | 2 | tank | ?????? | 0000-00-00 00:00:00 | 
+------+-----+------+------------+---------------------+ 
3 rows in set (0.00 sec) 
mysql> select timestampdiff(second,@d,now()); 
+--------------------------------+ 
| timestampdiff(second,@d,now()) | 
+--------------------------------+ 
| 0 | 
+--------------------------------+ 
1 row in set (0.00 sec) 

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

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

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

其实我觉得吧,真正要我们关心的是那些查询慢的sql,因为真正影响速度的是他们,关于慢查询的东西,有空写一下。


    
 
 

您可能感兴趣的文章:

  • 查看数据库中所有触发器的sql语句
  • 在SQLServer上查看SQL语句的执行时间的方法
  • mysql通过查看跟踪日志跟踪执行的sql语句
  • oracle查看表空间已分配和未分配空间的语句分享
  • 在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误
  • Oracle 查看表空间的大小及使用情况sql语句
  • 探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句
  • 请问linux下怎么用命令行的方式查看系统自动运行的程序?(因为我只能通过ssh来查看)
  • 请问linux下查看某个程序的运行界面的程序是什么?
  • 如何查看shell 运行的记录
  • 查看 MySQL 已经运行多长时间的方法
  • linux 中查看过去运行的命令的命令是什么?
  • 如何查看linux一开机就运行了哪些程序
  • 怎么查看一个程序的运行情况
  • 怎样查看当前正在运行的进程?
  • MySQL查看目前运行状况的两种方法
  • 如何在shell下查看当前运行的内核版本号?
  • 在Shell环境下,如何查看远程Linux系统运行了多少时间?
  • 用什么方法可以查看在windows下jvm下运行当前java程序的线程数和线程名称?
  • 请教各位大帅:jswdk中运行jsp,为何客户端浏览器无内容,查看原代码,就是原文件?
  • 怎么查看Linux中所运行的进程,并且知道哪些是停止响应的,用什么命令可以杀掉停止响应的进程?
  • redhat ent 4 u4上,如何象readhat ent3 u6版本那样使用top可以查看每个逻辑CPU的利用率以及运行进程的资源使用情况?
  • linux下查看内核的命令是什么? iis7站长之家
  • /proc/uptime 提供了系统最近一次启动以来运行的时间,但我用cat命令查看时显示:5047.53 4585.81,如何将它转为dd:hh:mm:ss形式?系统最
  • 虚拟机的linux,在其中运行Server和Client,Server端send了一个大小4096B的包,客户端recv到3845B,用netstat查看连接,Recv-Q和Send-Q项显示为0,为什么没收完?其余字节哪去了??
  • 怎么样在Linux编程中查看某个指定的程序是否在运行?
  • C/C++实现对STORM运行信息查看及控制的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix下用java.util.Date取系统时间比直接在系统下用date命令查看系统时间早整整一个小时
  • 怎样查看安装某个软件包的时间
  • 如何查看已安装RPM包的安装时间
  • 查看某时间段到现在的系统日志的sed命令
  • 怎样查看linux服务器的开机时间和日期
  • 如何在Unix里面查看文件属性的时候看到文件的最后更新时间--要求精确到秒
  • solaris 下用什么命令可以查看一个文件的最后访问时间?
  • linux 如何查看关机时间
  • SQL Server 中查看SQL句子执行所用的时间
  • SHELL 如果查看文件的最后更新时间
  • redhat/centos 常用信息查看命令整理
  • unix在终端下如何查看如何查看 光盘里的内容? 如何进入光盘所在目录? 用什么命令可以查看光盘里文件的目录?
  • Ubuntu查看系统信息命令介绍
  • linux 命令执行结束后,想查看结果,但部分结果已经被覆盖,如何查看?
  • Ubuntu查看硬盘,分区相关命令介绍
  • 通过c程序写代码怎么查看进程是不是存在了?怎么查看该进程占用的内存是多少?
  • resin及jetty介绍以及如何 查看他们的版本号
  • ls查看时,查看到的4294967294 啥意思,熊猫请进
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • linux命令问题 输入一个查看命令(比如help) 显示满屏后 我怎么查看上一页的显示
  • MyEclipse如何查看和设置文件编码格式相关操作
  • linux能不能像xp那样子以幻灯片方式查看图片。我在一个文件夹里面有几张图片,想进行挑选。用幻灯片查看的方式比较方便
  • Ubuntu查看内存,进程相关命令介绍
  • 求教 关于gdb如何查看lib中的表达式
  • 准备学习docker: docker version命令查看版本
  • 在AIX(4.3)系统上如何查看内存情况
  • windows/windows 7/windows 8 下打开查看、修改及保存超大(GB级)文本文件及其它类型文件的工具-PilotEdit
  • linux下查看内核的命令是什么?
  • linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
  • SunOS solaris 系统维护-查看cpu、内存、磁盘空间的命令
  • Ubuntu ADSL上网,网络信息查看及防火墙相关配置命令介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3