MySQL慢查询记录
[提前声明]
文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章
写作不易,转载请注明,谢谢!
spark代码案例地址: https://github.com/Mydreamandreality/sparkResearch
MySQL慢查询记录
- 慢查询日志是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的
查询是否开启慢查询
show variables like 'slow_query_log%';
- 参数说明:
- slow_query_log 慢查询开启状态 OFF 未开启 ON 为开启
- slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
查看慢查询超时时间
show variables like 'long%';
- long_query_time 查询超过多少秒才记录
- 默认10秒
临时开启慢查询记录
- 优点:不需要重启数据库
- 缺点:Mysql重启后慢查询记录失效
- 默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启,是否开启慢查询日志:1表示开启,0表示关闭。
- 开启:
set global slow_query_log=1;
- 修改慢超时时间:
set global long_query_time=4;
永久开启慢查询记录
- 修改my.cnf
slow_query_log =1
slow_query_log_file=/application/mysql/data/localhost-slow.log
long_query_time = 1
- 参数说明:
- slow_query_log 慢查询开启状态
- slow_query_log_file 慢查询日志存放的位置
- long_query_time 查询超过多少秒才记录 默认10秒 修改为1秒
修改完需要重启Mysql服务
未使用索引的查询也记录到慢查询中
show variables like 'log_queries_not_using_indexes';
查询全部慢查询数量
show global status like '%Slow_queries%';
查看文件中记录的慢SQL
- SELECT SLEEP(15)
- 使用以上命令创造一条慢SQL
- 查看慢SQL的文件记录位置:show variables like ‘slow_query_log%’;
- 可以看到慢SQL已经被记录了下来,包括SQL的执行时长,执行时间,上锁时间等等信息,这样我们就可以拿这条SQL去分析优化了
- 后续章节介绍下如何对SQL进行性能分析和优化
- 有任何问题可以留言交流!