一、什么是慢查询日志?
慢查询日志官方给出的理解太费劲了,本博主,按照日常思维进行一下讲解吧,慢查询日志顾名思义,就是查询慢的日志记录啊,我们在数据库中的增删改查等操作,如果执行时间超过了数据库中慢查询设置的默认查询时间之后,就会把这些执行较慢的sql记录到日志中,像这样的日志叫做慢查询日志。这么一说,大家应该比较好理解了吧,哈哈。
二、慢查询有哪些参数配置?
MySQL 慢查询的相关参数解释:slow_query_log :是否开启慢查询日志,on表示开启,0ff表示关闭
1、slow_query_log
是否开启慢查询日志,1表示开启,0表示关闭。
2、log-slow-queries
旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
3、slow-query-log-file
新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
4、long_query_time
慢查询阈值,当查询时间多于设定的阈值时,记录日志。一般设置成1s或者2s
5、log_queries_not_using_indexes
未使用索引的查询也被记录到慢查询日志中(可选项)。
6、log_output:
日志存储方式。
(1)log_output=
'FILE'
表示将日志存入文件,默认值是
'FILE'
。
(2)log_output=
'TABLE'
表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。
(3)MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output=
'FILE,TABLE'
。
(4)日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。
三、慢查询日志在哪里查?
1、首先我们需要先查看下数据库中的配置中是否开启了慢查询并且将慢查询日志输出到哪里了,要不然鬼才知道它在哪里呢?具体的查看方法如下:
(1)登录mysql数据库,mysql -uroot -p -hxxxx
(2)查看慢查询是否开启:
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启,如下所示:
mysql> show variables like '%slow_query_log%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /usr/local/mysql/data/localhost-slow.log | +---------------------+------------------------------------------+ 2 rows in set (0.00 sec) mysql> set global slow_query_log=1; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%slow_query_log%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/data/localhost-slow.log | +---------------------+------------------------------------------+ 2 rows in set (0.00 sec) #使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此),下面的操作我们在my.cnf中添加
(3)开启慢查询并设置存储方式:
slow_query_log =1
log_output = file
(4)自定义设置慢查询存储的路径
slow_query_log_file=/data/mysql/mysql-slow.log
(5)自定义设置慢查询请求时间的配置为1s
long_query_time = 1
(6)重启mysql服务器之后查看参数是否设置成功
/etc/init.d/mysqld restart
使用以下方式进行查看即可:
show variables like '参数名称';
四、使用mysqldumpslow来分析慢查询日志