开启慢查询功能slow_query_log_file 慢查询日志文件路径slow_query_log 用于指定是否打开慢查询日志long_query_time 超过多少秒的查询就写入日志log_output=file必须指定file或者是table如果是table则慢查询信息会保存到mysql库下的slow_log表中。这点要清楚。默认值是NONE动态设置,实时生效,无需重启mysqld:
1、设置全局变量SET GLOBAL log_output='file'
SET GLOBAL slow_query_log='ON';
SET GLOBAL slow_query_log_file = '/var/lib/mysql/localhost-slow.log';
# SET GLOBAL long_query_time = 5;
(无法动态修改这个值,必须修改my.cnf配置: long_query_time = 5 )
2、查看日志
tailf /var/lib/mysql/localhost-slow.log
注意: 以上参数,重启mysql之后,会自动失效! 如果需要永久生效,需要配置到my.cnf中。
mysql自带了一个查看慢日志的工具mysqldumpslow。执行mysqldumpslow --h可以查看帮助信息。主要介绍两个参数-s和-t-s 这个是排序参数,可选的有:al: 平均锁定时间ar: 平均返回记录数at: 平均查询时间c: 计数l: 锁定时间r: 返回记录t: 查询时间-t n 显示头n条记录。实例:mysqldumpslow -s c -t 20 host-slow.log mysqldumpslow -s r -t 20 host-slow.log上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。mysqldumpslow -t 10 -s t -g “left join” host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句。
用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。
-----------------------------------------------------------------
mysql> show variables like '%slow%';
+---------------------------+-----------------------------------+
| Variable_name | Value |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------------+-----------------------------------+
5 rows in set (0.00 sec)