1. 慢查询有什么用?


它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化.


2. 如何开启慢查询?


首先我们先查看MYSQL服务器的慢查询状态是否开启.


连接MYSQL




mysql慢查询 set long_query_time mysql5.7查询慢_mysql


然后执行如下命令:(我的已开启所以红圈处显示“ON”,未开启显示“OFF”)



mysql慢查询 set long_query_time mysql5.7查询慢_trace_02



开启慢查询非常简单, 操作如下:


方法一: 找到mysql的配置文件my.ini(MySQL\MySQL Server 5.5), 在mysqld下方加入慢查询的配置语句(注意:一定要在[mysqld]下的下方加入, 如果是在[mysqld_safe]下面加入配置语句是不会生效的. 我在配置过程中就犯了这个错误, 亲身体会到了其痛苦!)


mysql慢查询 set long_query_time mysql5.7查询慢_MYSQl_03


log-slow-queries: 代表MYSQL慢查询的日志存储目录, 此目录文件一定要有写权限,.


long_query_time: 最长执行时间. (如图, MSYQL将记录下所有执行时间超过1秒的SQL语句, 此处为测试时间, 时间不应太小最好在5-10秒之内, 当然可以根据自己的标准而定);


log-queries-not-using-indexes     #表示记录下没有使用索引的查询


配置好以后重新启动一个MYSQL:


mysql慢查询 set long_query_time mysql5.7查询慢_MySQL_04


我们再观察一下MySQL\MySQL Server 5.5\目录下面是否自动创建了mysql-slow.log文件.


至此就慢查询配置OK了。


注:不同版本下的MYSQL慢查询需要配置文件会有所不同,我的是5.5


二、不通过配置文件开启慢查询;(这种方法各个版本基本上都可以使用,不用重启,更不需要去找配置文件的位置)


使用DOS命令,进入mysql;


mysql慢查询 set long_query_time mysql5.7查询慢_mysql_05

                 通过DOS命令 开启慢查询“set slow_query_log=ON;”命令打开;(注:不同版本global可需要可不需要自己尝试)

mysql慢查询 set long_query_time mysql5.7查询慢_MySQL_06

    

设置输出的格式"select @@global.log_output='FILE';


或set @@global.log_output='TABLE';//设置为库表格式


show create table mysql.slow_log;//慢查询保存到mysql数据的slow_log表中"可以设置默认为TABLE,FILE和TABLE只能同时使用一个。


如果需要改变log_output的值使用“set global log_output='TABLE';即可修改”


设置log文件的存放位置“set slow_query_log_file="保存的路径";”                                       


mysql慢查询 set long_query_time mysql5.7查询慢_mysql_07

   

设置慢查询时间“set long_query_time=5;”这里设置为5s(注:使用set global long_query_time=5可能会设置失败)  


mysql慢查询 set long_query_time mysql5.7查询慢_mysql_08