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:查看哪些表在使用。