Mysql 定位慢sql

数据库调优我个人觉得必须要明白两件事
1. 定位问题(你得知道问题出在哪里,要不然从哪里调优呢);
2. 解决问题(这个没有基本的方法来处理,因为不同的问题处理的方式方法不一样,得从实践中不断的探索,如sql调优,配置优化,硬件升级等等);

这一篇文章将会教会你如何来定位一个慢查询的sql,如果你是一个初学者,很想知道在mysql中如何来定位哪些sql语句是花时间最长的。

步骤1:查询是否开启了慢查询
show variables like '%slow%';

下面会输出相关的信息
+---------------------+-----------------------------+
| Variable_name       | Value                       |
+---------------------+-----------------------------+
| log_slow_queries    | ON                          |
| slow_launch_time    | 2                           |
| slow_query_log      | ON                          |
| slow_query_log_file | /data/mysql-slow/mysql-slow |
+---------------------+-----------------------------+
我这里是开启了,没有开启的,直接set log_slow_queries on 就ok了。


步骤2:设置慢查询的时间限制
mysql默认的慢查询时间是10秒,可以设置成其它的时间。
show variables like 'long_query_time';
set long_query_time=1;

步骤3:查看慢查询
show status like 'slow_queries';
它会显示慢查询sql的数目,具体的sql就在上面的Log file日志中可以看到。

你也可以看到当前有多个连接在上,使用命令 show status like 'connection'

其它命令
show processlist: 查看哪些线程在运行;
show open tables :查看哪些表在使用。

猜你喜欢

转载自gaofulai1988.iteye.com/blog/2252718