前言:在项目开发中,有些SQL语句可能执行的时间比较长,需要给予优化,为此我们需要开启MySQL慢查询日志,用于记录那些执行时间比较长的SQL语句,然后给予优化处理,以提高我们项目的代码响应速度,MySQL中默认慢查询日志是关闭的;
第1步、在cmd命令窗口登录mysql客户端----->在mysql命令行中输入:show variables like '%quer%'; 如下图所示:
看到这张图片中的内容,可能有人会有疑问:为什么我输入同样的命令,显示的信息却不一样呢? 这是mysql版本的问题,不同的mysql版本对应上图信息不同,如:上面的图片是mysql5.5版本的输出内容,其中控制慢查询日志是否开启的变量为:slow_query_log和log_slow_queries(这两个随便设置一个,另一个就会跟着变化); 而在低于5.5版本中的mysql中,其控制慢查询日志是否开启的变量只有一个:log_slow_quries 当然这不是我们这里讨论的重点; 很明显上面的slow_query_log = ON,也就是慢查询日志已经开启;那么假如我们当前的slow_query_log = OFF,该如何开启呢?
有两种方式:
方式一、永久开启:windows系统在MySQL安装目录下的my.ini中配置,Linux系统在/etc/my.cnf中配置,配置完成后记得要重启MySQL服务器,重启命令:net stop mysql net start mysql 执行这两条命令后就重启完毕(注意:命令末尾不带分号;)
方式二、当前环境下开启:在mysql客户端命令行中输入: set global log_slow_queries = off; //OFF、off、0都行
运行完该条命令后关闭当前的cmd命令窗口(有些命令不关闭也会立即生效,这里建议关闭),再次打开cmd命令窗口,运行mysql客户端,输入show variables like '%quer%';就可以看到我们的配置生效了,类似的还可以使用set global 命令去配置其它选项; 这里就不再上效果图了,最后强调一点的是:为什么叫当前环境下开启? 为什么不是永久生效? 那是因为方式二的配置,如果重启MySQL服务器的话,就会失效,配置过的选项就会恢复到原来的值,所以叫当前环境下开启-------可以这么理解:重启一次MySQL服务器就刷新了一次环境!!!
第2步、模拟一下慢查询操作,看看慢查询日志中都记录了什么信息?
在cmd中登录mysql客户端,输入查询语句:select sleep(3); //注意:上面我们配置的慢查询时间标准为1s,所以这条SQL语句执行后将被我们配置的慢查询日志捕捉到
打开我们前面配置的慢查询日志文件:slow_query_log_file="F:\wamp\MySQL5\data\mysql_slow_query.log",如下图所示:
温馨提示:在开启MySQL慢查询功能时,在运行net start mysql命令时,如果报错:1067 进程意外终止, 这种错误绝大部分情况都是my.ini配置文件中出现了错误配置项!