查看是否开启了mysql慢日志查询
show VARIABLES like "%slow%";
如果没有开启,如下两种方法开启。
一.通过改变量开启 使用sql语句来修改: 语句列出来的变量,运行如下sql:
set global slow_query_log = ON;//打开慢日志查询set global slow_query_log_file = '/var/mysql-slow.log';set global long_query_time=1; #设置大于1s的sql语句记录下来
注意:重启以后就失效了,mysql启动加载的是配置文件里的设置。
二.改配置文件 1.先寻找mysql配置文件 my.cnf
find / -name my.cnf
或者
mysql --help | grep my.cnf
这里有四个文件,优先级从左到右,前者不存在依次往下找
找到了配置文件在/etc/my.cnf
2.编辑配置文件,打开慢日志查询
vi /usr/my.cnf
加上如下代码:
#最大sql运行时间long_query_time=1#slow_query_log,打开慢日志查询slow_query_log=1#慢日志存放地址slow_query_log_file=/var/mysql-query-slow.log#将所有没有使用带索引的查询语句全部写到慢查询日志中log_queries_not_using_indexes=1最后 1、日志不能说明一切问题,知识表象,可能跟锁表、系统繁忙的偶发性有关,当然,如果某条SQL语句经常查询慢那基本可以判断是可以再次优化的。 2、不要开启log-queries-not-using-indexes没有索引查询记录功能,这个功能实际用处不大。就是记录SQL查询的时候,没有索引的通通记录。虽然索引对查询的速度有影响,但要看数据量大小。因为开启了这个功能以后,select * from tab这样的查询也会被记录在日志中,很快日志文件就会被垃圾信息给充满,从而影响主要的查询慢日志记录的查看。 3、MySQL自带了mysqldumpslow工具用来分析slow query日志,或者其它工具也可以,通过工具配合可以更好的分析。