慢查询日志
概述
- 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表中
-
知是行之始,行是知之成