文档章节

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

筱飞
 筱飞
发布于 2016/04/28 10:26
字数 743
阅读 10
收藏 1
点赞 1
评论 0

网站运行很慢的时候,我就特别起知道为什么这么慢,所以我查啊查,数据库绝对是很重要的一部分,里面运行的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,因为真正影响速度的是他们,关于慢查询的东西,有空写一下。


本文转载自:http://blog.51yip.com/mysql/968.html/comment-page-1

共有 人打赏支持
筱飞
粉丝 14
博文 133
码字总数 22342
作品 0
虹口
前端工程师
查询mysql日志以及slow sql

查看mysql语句运行时间的2种方法 show profiles timestampdiff来查看测试时间 http://blog.51yip.com/mysql/968.html 开启log日志 show variables like "%log%"; set glabel general_log=1 ......

月下独酌100
2015/09/07
47
0
Golang 学习笔记(10)—— mysql操作

本文为转载,原文:Golang 学习笔记(10)—— mysql操作 Golang go-sql-driver/mysql go操作mysql的驱动包很多,这里讲解当下比较流行的go-sql-driver/mysql 安装 执行下面两个命令: 安装完...

ChainZhang
01/04
0
0
提高mysql查询效率的六种方法

1,表设计一定要优化,冗余数据最少,少用连接查询。如果在实际应用中,使用了极其复杂的连接,子查询,则数据表的设计得要重新考虑了。 2,尽量用char而不是varchar,因为固定长度得string用起...

云栖希望。
2017/12/09
0
0
PHP大批量插入数据库的3种方法和速度对比

这篇文章主要介绍了PHP大批量插入数据库的3种方法和速度对比,3种方法分别使用普通insert语句、insert into语句和事务提交,需要的朋友可以参考下 第一种方法:使用insert into 插入,代码如下...

说谎的少年
2014/11/03
0
0
mysql日志详细解析

MySQL日志: 主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志; 日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mys...

啊莫
2015/11/24
175
0
MySQL 插入中文不乱码的5种方法

MySQL 插入中文不乱码的5种方法: 方法一: 登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 方法二: 在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件 方法...

技术小胖子
2017/11/15
0
0
Shell脚本中执行sql语句操作mysql的5种方法

Shell脚本中执行sql语句操作mysql的5种方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-10-31 我要评论 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell...

梁东升
2016/07/13
0
0
MySQL+Hibernate下连接空闲8小时自动断开问题解决

本文为转载学习 转载文章1:http://hi.baidu.com/boyyf/item/fe4dcc1329297349e75e06ce 前段时间刚完成一个家教网项目,数据库为MySQL5.0,持久层使用Hibernate 3.1,没有使用额外的连接池,...

heroShane
2014/01/27
0
0
show profiles mysql查询优化之profile

当mysql遇到性能瓶颈时,从mysql本身出发去优化大致分为两个方面。一个是调整mysql的配置参数,另一个是优化查询sql了。 查看sql运行时间是必不可少的,这时候profile就相当重要了。 1、查看...

jiangwu
2016/09/30
25
0
MySQL主从复制常见故障及解决方法

MySQL主从复制常见故障及解决方法? 1.1.1故障1:从库数据与主库冲突 解决方案: ###方法1: ###方法2:在从库配置文件中配置,直接跳过不影响业务的错误号 1.1.2故障2:MySQL主从复制延迟问...

科技探索者
2017/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ClassNotFoundException: javax.el.ELManager

这个是因为tomcat7中的el-api2.2,有些版本太低,建议升级tomcat到8.0,利用el-api3.0就会解决这个问题。

无语年华
7分钟前
0
0
Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
20分钟前
0
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
21分钟前
0
0
Kafka相关使用

安装前提,需要有jdk环境,还有zookeeper环境 zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ zookeeper安装参考:https://www.jianshu.com/p/f7037105db46 kafka的下......

朝如青丝暮成雪
21分钟前
0
0
CentOS7 解决无法使用tab自动补全 tab代码提示

一、前言 对于刚刚开始学习linux的新人来说,linux的一切都显着神秘,只能惊叹于大牛在Linux上行云流水的操作。今天介绍一下在linux中自动补全的功能。 对于新人来说,在不懂得技巧的情况下,...

ziluopao
27分钟前
0
0
redis安装

https://www.cnblogs.com/feijl/p/6879929.html

ghou-靠墙哭
27分钟前
0
0
Spring核心——注解自动装载

从配置上扩展 之前的文章介绍了Spring的IoC容器配置管理方面的详细内容,需要了解的可以从IoC容器的设计模式开始阅读。在介绍基于注解配置的配置之前我们再重复一下在之前提到的基本认识: ...

随风溜达的向日葵
31分钟前
2
0
ElasticSearch学习(8)—— SearchType

Elasticsearch有四种类型的SearchType 1、query and fetch 向索引的所有分片(shard)都发出查询请求,各分片返回的时候把元素文档(document)和计算后的排名信息一起返回。这种搜索方式是最...

叶枫啦啦
32分钟前
0
0
MYSQL备份工具-mysqldump

介绍 mysqldump 是文本备份还是二进制备份 它是文本备份,如果你打开备份文件你将看到所有的语句,可以用于重新创建表和对象。它也有 insert 语句来使用数据构成表。 语法 mysqldump 的语法是...

郭恩洲_OSC博客
34分钟前
0
0
我的第一个go web框架

使用了beego等go web开发框架之后,感觉各种不方便,尤其是在接收参数、和自定义输出的时候,各种难受,定义各种model,这不是找事情嘛??尤其是在角色权限控制的时候我也感觉力不从心。。。...

独坐苔痕但观罗敷
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部