MySQL“慢SQL”定位

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:查看哪些表在使用。
原文地址:https://www.cnblogs.com/WONDERFUL-cnblogs/p/5481358.html