mysql慢查询
1、慢查询作用?
它能记录下所有执行超过long_query_time时间的sql语句,帮你找到执行慢的sql,方便我们对这些sql语句进行优化。
2、如何开启慢查询?
首先我们先查看mysql服务器的慢查询状态是否开启。
执行如下指令:
我们可以看到log_slow_queries状态为ON,说明当前已经开启慢查询。如果没有开启,进行如下操作:
方法一:找到mysql的配置文件my.cnf(/etc/my.cnf),在mysqld下方加入慢查询的配置语句(注意一定要在[mysqld]的下方添加,如果是在[mysqld_safe]下面加入配置语句是不会生效的. 我在配置过程中就犯了这个错误, 亲身体会到了其痛苦!)
log-slow-queries:代表mysql慢查询的日志存储目录,此目录文件一定要有写权限
long_query_time:最长执行时间(如图,mysql将记录下所有执行时间超过2秒的sql语句,测试时候时间不应太短);
配置好了以后重新启动mysql服务,service mysqld restart
方法二:在mysql命令下执行如下操作:
通过set命令来设置mysql变量的状态,但这个只是临时生效,重启服务后就回复原来的状态。
配置完成后我们来检查一下状态,如下图:
说明已经开启了慢查询服务,并且时间限制为2秒。
3、慢查询日志验证
我们在观察一下/var/lib/mysql/目录下面是否自动创建了mysql-slow.log文件。
cat mysql-slow.log 发现文件已存在. 只是文件中并没有任务SQL的记录. 那么现在我们测试一下执行一条超过long_query_time的SQL语句.
执行完了一个5秒的SQL语句, 不出意外的情况下mysql-slow.log文件中应该记录下了这条SQL语句. OK! 我们cat mysql-slow.log一下
果然,慢查询的整个日志过程配置完成!