一. MySQL 慢查询日志
- 什么是慢查询: 假设执行一条查询sql语句,在指定时间内没有返回执行结果,说明查询过慢,对这条执行语句进行日志记录,慢查询就是指记录的这个日志(注意点: 慢查询日志记录需要查询日志记录到文件,除了排查问题以外一般情况下建议关闭)
- 查询当前mysql服务器慢查询的配置(默认是关闭,开启后默认10未返回结果进行慢查询日志记录): show variables like ‘slow_query%’ 下方的’slow_query_log_file’ 文件路径就是记录慢查询日志的文件
- 开启慢查询: SET GLOBAL SLOW_QUERY_LOG=‘ON’;或者使用"set global slow_query_log=1"设置开启,但是后者开启后MySql重启会失效
- 查询慢查询记录日志时间: SHOW VARIABLES LIKE ‘long_query_time’; 默认10秒
- 修改记录慢查询日志的触发时间(多长时间内未返回结果进行记录,注意点由于保持当前会话,修改完毕后需要重启数据库连接,再去查看才会生效): SET GLOBAL LONG_QUERY_TIME=5;
- 通常情况下慢查询日志文件在/var/bil/mysql/文件名-slow.log(默认文件名 主机名-slow.log)
- 慢查询日志文件解释:
小总结
- 查询当前mysql服务器慢查询的配置
show variables like 'slow_query%'
- 开启慢查询: SET GLOBAL SLOW_QUERY_LOG=‘ON’;或者使用"set global slow_query_log=1"
SET GLOBAL SLOW_QUERY_LOG='ON'
SET GLOBAL SLOW_QUERY_LOG=1
- 查询慢查询记录日志时间, 默认10秒
SHOW VARIABLES LIKE 'long_query_time';
- 修改记录慢查询日志的触发时间为5秒
SET GLOBAL LONG_QUERY_TIME=5;
- 测试时为什么不生效的问题:需要重新连接,或新开一个会话才会看到修改后的值与生效
SHOW VARIABLES LIKE 'log_query_time%';
SHOW GLOBAL VARIABLES LIKE 'log_query_time';
- 慢查询日志分析看上面
- 总结配置开启慢查询日志永久生效,记录执行超过3秒的sql
二. mysqdumpslow日志分析工具
- 解释: 生产上开启慢查询以后可以使用pt-query-digest或mysqdumpslow工具对慢查询日志进行分析,对sql进行优化处理
- 打开mysqdumpslow 解释文档命令: “mysqldumpslow --help”
- 对mysqdumpslow命令参数解释
- 使用举例
"./mysqldumpslow -s t -t 10 /慢查询日志文件所在目录/文件名-slow.los -g select"
- 执行完mysqdumpslow命令后返回解释
- 另外还有三方提供的慢查询日志分析工具例如"Pt_query_digest" 但是该工具是基于python的