MySql提供慢SQL日志的功能,能够记录下响应时间超过一定阈值的SQL查询,以便于我们定位糟糕的查询语句。
首先,查询当前mysql数据库是否开启了慢查询日志功能:
mysql -uroot -p
******
show VARIABLES like '%slow%';
slow_query_log的值是ON,代表当前数据库已经开启了慢查询功能。slow_query_log_file表示慢日志的路径。
还可以查看超过多少秒算是慢查询:
show VARIABLES like 'long_query_time';
默认是10秒,这里已经被配置为1秒了。
那么慢查询功能是如何配置的呢?
Linux系统下是编辑/etc/my.cnf
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/remotejob-01-slow.log
long_query_time=1
然后,重启mysql服务使之生效:
service mysqld restart
接下来就可以通过slow_query_log_file指定的日志路径查看慢查询记录了。
1. 查看mysql系统参数(windows系统)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 | OFF | | slow_query_log_file | /mysql/data/nagiosdb-slow.log | +---------------------------+-------------------------------+ 5 rows in set (0.00 sec) slow_query_log: off关闭状态 on 开启状态 slow_launch_time 默认超过2s为慢查询 slow_query_log_file 慢查询日志存放地点 这三个参数,在不同的mysql版本中,不太一样,不过都可以通过 show variables like "%slow%" 查看出来 |
2. 运行如下命令即可运行慢查询日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | mysql> set global slow_query_log=ON; Query OK, 0 rows affected (0.03 sec) mysql> set global slow_launch_time=5; Query OK, 0 rows affected (0.00 sec) mysql> show variables like "%slow%" ; +---------------------------+-------------------------------+ | Variable_name | Value | +---------------------------+-------------------------------+ | log_slow_admin_statements | OFF | | log_slow_slave_statements | OFF | | slow_launch_time | 5 | | slow_query_log | ON | | slow_query_log_file | /mysql/data/nagiosdb-slow.log | +---------------------------+-------------------------------+ 5 rows in set (0.00 sec) mysql 5.1.6版本起,slow_query_log 和 slow_launch_time 支持写文件或写数据库表两种方式,并且日志的开启,输出方式的修改,都可以在global级别动态修改。 只需简单通过 set global slow_query_log=ON;即可开启慢查询,而不需要重启数据库!<br> |
3. 可以直接写到配置文件中 my.cnf
1 2 3 4 | slow_query_log_file=/mysql/log/nagiosdb-slow.log slow_launch_time=5 可以完成配置! |