MySQL慢日志
2017-03-10 本文已影响38人
编程界的小学生
定义

小建议

如何查看是否开启了慢日志
SHOW VARIABLES LIKE '%slow_query_log%';

如何开启慢日志
SET GLOBAL slow_query_log = 1;
关闭是0
SHOW VARIABLES LIKE '%slow_query_log%';

注意:开启慢日志也只是对本次服务有效,若重启mysql服务,将自动变成默认的关闭状态。那如何永久开启呢?(不推荐,毕竟浪费性能,只建议在测试的时候开启一天看下哪里的sql慢)
永久开启办法
修改配置文件my.cnf,[mysqld]下增加或修改参数
slow_query_log和slow_query_log_file后,然后重启MySQL服务器。也即将如下两行配置进my.cnf文件
slow_query_log=1
slow_query_log_file=C:\ProgramData\MySQL\MySQL Server 5.5\Data\OutOfMemoryError-slow.log
如何查看慢日志的时间?
SHOW VARIABLES LIKE 'long_query_time%';

默认10秒,大于(不是大于等于,是大于)10s的就记录到慢日志log里。
如何设置慢日志的时间
SET GLOBAL long_query_time=3;
设置为3秒
注意:修改慢日志时间后,有两种方式可以查看是否修改成功
(一)
SHOW GLOBAL VARIABLES LIKE 'long_query_time%';
(二)新开一个mysql窗口运行如下:
SHOW VARIABLES LIKE 'long_query_time%';
因为没有GLOBAL,所以需要新开个窗口,好比刷新一下

测试慢日志
由于目前没sql执行3秒以上,所以无法记录,可以用sleep方法进行测试
SELECT sleep(4);
//睡上4秒
会发现在log位置生成了慢日志log文件,里面记录了time(sql运行时间)、哪条sql慢以及哪个数据库。
日志分析工具mysqldumpslow


若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:
