慢查询日志
概述
- MySQL慢查询日志是MySQL提供的一种日志记录,用来记录在MySQl中响应时间超过阈值(long_query_time),默认10s的查询语句。
查询日志相关参数
-
查看是否开启慢查询日志
-
show variables like '%slow_query_log%'
-
-
开启
-
set global show query_log = 1 -
默认设置后重启失效,永久生效,则修改配置文件
-
阈值
-
查看阈值
-
show variables like 'long_query_time'
-
-
修改阈值
-
set global long_query_time = 4
-
-
模拟查询执行5秒
-
select sleep(5)
-
Show profile分析
概述
- mysql提供的用来分析当前会话中的sql语句执行下一个环节耗费的时间都记录下来
- 默认保存最近15次的运行结果
使用
-
查看版本是否支持
-
show variables like 'profiling'
-
-
打开profile
-
set profiling = on
-
-
查看结果
-
show profiles
-
-
诊断sql
-
show profile cpu,block io for query id值 -
当出现以下选项时,要进行优化
- converting HEAP to MyISAM 查询结果太大,内存不够用了,往磁盘上存在了。
- Creating tmp table 创建临时表
- copying to tmp table on disk 把内存中临时表复制到磁盘,危险操作
- locked 被锁定
-
全局查询日志
-
只允许在测试环境使用,不能在生产环境中使用
-
可以把所有的执行sql都抓取出来查看
-
设置启用
-
set global general_log = 1 -
set global output = 'TABLE' -
此时所编写的sql都会记录到mysql库中的general_log表中
-
知是行之始,行是知之成
本文介绍了MySQL的慢查询日志功能,用于记录响应时间超过设定阈值(默认10s)的查询。通过`show variables like '%slow_query_log%'`检查日志状态,`set global slow_query_log=1`开启,`set global long_query_time=4`调整阈值。同时,文章讲解了`SHOW PROFILE`用于分析SQL执行细节,如`CONVERTING HEAP TO MYISAM`等提示可能需要优化。此外,还提及了全局查询日志的启用,但警告不应在生产环境中使用。最后,提供了如何通过`SHOW PROFILE`和`SHOWPROFILE`进行SQL性能诊断。
2193

被折叠的 条评论
为什么被折叠?



