MySQL开启慢查询日志
慢查询日志介绍
MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过long_query_time
值的 SQL,则会被记录到慢查询日志中。
long_query_time
的默认值为 10,意思是运行 10 秒以上的语句。 由他来查看哪些 SQL 超出了我们的最大忍耐时间值
比如一条 sql 执行超过 5 秒钟,我们就算慢 SQL,希望能收集超过 5 秒的 sql,结合explain
进行全面分析。
默认情况下,MySQL 数据库没有开启慢查询日志,需要我们手动来设置这个参数。
如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。
查看及开启
默认情况下slow_query_log
的值为OFF
1 | SHOW VARIABLES LIKE '%slow_query_log%'; |
命令行开启:
1 | set global slow_query_log=1; |
查看默认的慢查询日志记录 long_query_time
时间,10 秒。
1 | SHOW VARIABLES LIKE '%long_query_time%'; |
SHOW VARIABLES LIKE '%long_query_time%';
显示的是当前会话级别的变量值,仅针对当前连接的数据库会话有效。
SHOW GLOBAL VARIABLES LIKE 'long_query_time';
显示的是全局级别的变量值,对于所有的连接和会话都有效。
注意: 运行时间正好等于 long_query_time 的情况,并不会被记录下来。
修改全局级别的慢查询记录时间为5秒
1 | SET GLOBAL long_query_time=5; |
修改配置文件使永久生效
修改 /etc/my.cnf
文件
[mysqld]
下增加如下参数,然后重启 MySQL 服务。
1 | # 开启服务 |
查询当前系统中有多少条慢查询记录
1 | SHOW GLOBAL STATUS LIKE '%Slow_queries%'; |
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论