慢查询日志
检查是否开启慢查询日志
慢查询日志是MySQL提供的一种日志记录,用于记录MySQL中相应时间超过阈值的SQL语句。
慢查询日志默认是关闭的,建议开发调优时打开,最终部署时关闭。
检查是否开启了慢查询日志:
show variables like '%slow_query_log%'
临时开启:
set global slow_query_log=1;
永久开启:
在/etc/my.cnf中的mysqld中追加配置:
vi /etc/my.cnf 打开文件
slow_query_log=1
slow_query_log_file=【路径和文件名自己指定】
慢查询阈值设置
慢查询阈值查询:
show variables like '%long_query_timie%';
临时设置阈值:
set global long_query_time=5;设置完成后,重新登录生效(不需要重启服务)
永久设置阈值:
在/etc/my.cnf 的mysqld中追加配置
vi /etc/my.cnf
long_query_time=【阈值】;
测试慢查询
(1)通过日志查看慢查询情况
在MySQL中查询超过阈值的SQL记录:
show global status like '%slow_queries%'; ——可以查询到超出阈值的记录数量
慢查询的sql被记录在日志中,可以通过日志查看。
(2)通过mysqldumpslow工具查看慢查询情况
mysqldumpslow 常用命令:
s:排序方式
r:逆序
l:锁定时间
g:正则匹配模式
示例:
(1)获取返回记录最多的3个SQL
mysqldumpslow -s r -t 3 /【日志路径】
(2)获取访问次数最多的3个SQL
mysqldumpslow -s c -t 3 /【日志路径】
(3)按照时间排序,前10条包含 left join查询语句的SQL
mysqldumpslow -s t -t 10 "left join" /【日志路径】
教程目录
SQL优化教程01-MySQL分层
SQL优化教程02-SQL解析
SQL优化教程03-B树和索引
SQL优化教程04-explain的用法
SQL优化教程05-优化案例1单表查询
SQL优化教程06-优化案例2多表查询
SQL优化教程07-避免索引失效的原则
SQL优化教程08-SQL排查
SQL优化教程09-锁机制