服务器运行环境 我用的是wampserver
先说命令:
show variables like 'slow_query%'; //查看是否开启慢查寻
set global slow_query_log =on; //开启慢查询
show variables like 'long_query_time'; //查看慢查寻记录的时间
set long_query_time =3; //设置记录执行超过3秒的sql
步骤:
1.mysql命令行 输入
show variables like 'slow_query%';
结果如下:
mysql> show variables like 'slow_query%';
+---------------------+---------------------------------------------------------
-----+
| Variable_name | Value
|
+---------------------+---------------------------------------------------------
-----+
| slow_query_log | OFF
|
| slow_query_log_file | D:\wamp\wamp\bin\mysql\mysql5.6.17\data\SZLD-PC-103-slow
.log |
+---------------------+---------------------------------------------------------
-----+
2 rows in set (0.00 sec)
mysql>
通过语句查询出来的结果,可以看到
slow_query_log 是OFF 即 慢查寻没有开启
慢查寻日志存放路径 是 slow_query_log_file 后面的路径,这个一般不用改(因为我改了几次都没反应 = =)
慢查询开启方式:
mysql 命令行 输入
mysql> set global slow_query_log =on;
Query OK, 0 rows affected (0.05 sec)
接着再输入 查询语句
show variables like 'slow_query%';
结果如下:
mysql> show variables like 'slow_query%';
+---------------------+---------------------------------------------------------
-----+
| Variable_name | Value
|
+---------------------+---------------------------------------------------------
-----+
| slow_query_log | ON
|
| slow_query_log_file | D:\wamp\wamp\bin\mysql\mysql5.6.17\data\SZLD-PC-103-slow
.log |
+---------------------+---------------------------------------------------------
-----+
2 rows in set (0.01 sec)
已经显示开启。
mysql 命令行输入
show variables like 'long_query_time';
结果如下:
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
mysql>
发现慢查询记录的是超过10秒的。
现在改成你想要设置的时间,我测试3秒;
Mysql命令行 输入:
set long_query_time = 3; //注意这里不要加global
然后再执行一次
show variables like 'long_query_time';
结果如下:
mysql> set long_query_time =3;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
mysql>
如果设置时间的时候加上了global,虽然显示query ok 但是你查询的结果还是10秒,没有变化,看了很多博客都是加上了global,我这里是没有效果,可能是用的环境不一样。
这个时候 慢查寻已经开启,记录sql语句执行时间超过3秒的所有语句。
千万不要重启服务器!千万不要重启服务器!千万不要重启服务器!
这个时候 你就可以打开浏览器访问你的本地项目了,比如你想看主页是不是有慢查询,你就访问你的主页,然后服务器会把超过3秒的sql都记录在日志里
日志的路径就是最上面的 slow_query_log_file 的路径。
我这里测试一下:
msql 命令行 输入:
select sleep(4);
执行结果
mysql> select sleep(4);
+----------+
| sleep(4) |
+----------+
| 0 |
+----------+
1 row in set (4.03 sec)
mysql>
现在去打开慢查寻日志:
可以看到 今天2017-8-29 9:17 执行的 select sleep(4) 已经被记录了。
嗯,就是这样。
每次重启wampserver 都要重新打开慢查寻,网上还有很多博客说 配置好了要重启一下mysql,重启了慢查寻还要重开,不知道是不是用的东西不一样的原因。
我用的是wampserver 亲测可行。
有用的点个赞,谢谢。