定义
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
- long_query_time的默认值是10,意思是运行10秒以上的语句。
- 由它来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合之前的explain进行全面分析。
使用方法
说明:对性能会带来一定影响
- 默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。
- 当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。
查看是否开启及如何开启
默认:SHOW VARIABLES LIKE ‘%slow_query_log%’;
开启:set global slow_query_log=1;
开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢
使用案例
- 查看当前多少秒算慢:SHOW VARIABLES LIKE ‘long_query_time%’;
- 设置慢的阈值时间:set global long_query_time=3;
- 为什么设置后看不出变化(设置3之后,查询依然显示10):
- 需要重新连接或新开一个会话才能看到修改值。
- SHOW VARIABLES LIEK ‘long_query_time%’;
- show global variables like ‘long_query_time’;
- 记录慢SQL并后续分析
- 查询当前系统中有多少条慢查询记录:
show global status like ‘%Slow_queries%’;