开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
前言
上篇我们学习了MySQL中的数据库优化。有兴趣的小伙伴可以阅读(MySQL数据库优化(二))。
下面我们继续学习MySQL中的数据库优化之慢查询日志。
慢查询日志
开启慢查询日志参数
- 开启slow_query_log
set global slow_query_log='ON';
然后我们查看慢查询日志是否开启,以及慢查询日志文件的位置:
show variables like '%slow_query_log%';
Variable_name | Value |
---|---|
slow_query_log | ON |
slow_query_log_file | /var/lib/mysql/slow.log |
这里能看到这时慢查询分析已经开启,同时文件保存在/var/lib/mysql/slow.log文件中。
- 修改long_query_time阈值
查看慢查询的时间阈值设置(即超过多少的执行时间算是慢查询),使用如下命令:
show variables like '%long_query_time%';
Variable_name | Value |
---|---|
long_query_time | 10.000000 |
如果想把时间缩短,比如设置为1s,可以进行如下设置:
set global long_query_time = 1;
set long_query_time = 1;
这里设置global后,再设置一遍的原因是global的方式对当前session的long_query_time失效,对新客户端有效,所以需要再设置一次当前的session。
再次查看时间:
Variable_name | Value |
---|---|
long_query_time | 1.000000 |
查看慢查询数目
查询当前系统中有多少条慢查询记录
SHOW GLOBAL STATUS LIKE '%slow_queries%';
慢查询日志分析工具
MySQL提供了日志分析工具mysqldumpslow。通过mysqldumpslow可以查看慢查询日志。常用的命令的具体参数如下:
- -a:不将数字抽象成N,字符串抽象成S。
- -s:表示按照以下哪种方式排序:
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间(默认)
ac:平均查询次数 - -t:返回前面多少条的数据。
- -g:后跟正则模式,大小写不敏感。
关闭慢查询日志
MySQL服务器停止慢查询日志功能有两种方法:
- 永久性方式
修改配置文件:
[mysqld]
slow_query_log=OFF
或者把slow_query_log注释掉或删除
[mysqld]
#slow_query_log=OFF
- 临时性方式
使用SET语句设置。
SET GLOBAL slow_query_log=off;
今天先学习到这里,明天继续