mysql sql执行慢 分析过程
2017-09-11 17:05
211 查看
为了验证select 1 与 select 1 from tableName 与 select * from tableName的执行效率,需要测试一下各自执行的时间。于是总结一下,查看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();
2.确定支持show profile 后,查看profile是否开启,数据库默认是不开启的。变量profiling是用户变量,每次都得重新启用。
查看方法: show variables like "%pro%";
设置开启方法: set profiling = 1;
再次查看show variables like "%pro%"; 已经是开启的状态了。
3.可以开始执行一些想要分析的sql语句了,执行完后,show profiles;即可查看所有sql的总的执行时间。
show profile for query 1 即可查看第1个sql语句的执行的各个操作的耗时详情。
show profile cpu, block io, memory,swaps,context switches,source for query 6;可以查看出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等
show profile all for query 6 查看第6条语句的所有的执行信息。
测试完毕后,关闭参数:
方法二: timestampdiff来查看执行时间。
这种方法有一点要注意,就是三条sql语句要尽量连一起执行,不然误差太大,根本不准
如果是用命令行来执行的话,有一点要注意,就是在select timestampdiff(second,@d,now());后面,一定要多copy一个空行,不然最后一个sql要你自己按回车执行,这样就不准了。
方法一: 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();
2.确定支持show profile 后,查看profile是否开启,数据库默认是不开启的。变量profiling是用户变量,每次都得重新启用。
查看方法: show variables like "%pro%";
设置开启方法: set profiling = 1;
再次查看show variables like "%pro%"; 已经是开启的状态了。
3.可以开始执行一些想要分析的sql语句了,执行完后,show profiles;即可查看所有sql的总的执行时间。
show profile for query 1 即可查看第1个sql语句的执行的各个操作的耗时详情。
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要你自己按回车执行,这样就不准了。
相关文章推荐
- webx学习总结之页面流程执行过程详细分析(转载)
- 关于springmvc执行的流程和处理过程分析
- JSP运行原理以及执行过程源码分析
- c语言编译、汇编、链接、执行过程分析
- 解决Linux上crontab执行两次及分析过程
- openwrt系统 sysupgrade 命令执行过程分析
- 【转】uboot bootm 执行过程分析
- 反编译C程序为汇编代码,汇编代码执行过程的分析与思考
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script【转】
- HAL层开发基础 && Android HAL module执行过程分析
- Hadoop MapReduce执行过程实例分析
- Linux进程启动过程分析do_execve(可执行程序的加载和运行)---Linux进程的管理与调度(十一)
- ios6 app启动过程中执行到过程分析
- 实现分析sql语句执行过程和编译时间的方法
- 20135239 益西拉姆 linux内核分析 进程的切换和系统的一般执行过程
- Mapreduce执行过程分析(基于Hadoop2.4)——(三)
- Linux 装载可执行程序过程的分析
- hadoop2提交到Yarn: Mapreduce执行过程reduce分析3
- Twitter Storm源代码分析之Topology的执行过程
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程