Mysql 慢查询日志
show variables like '%query%';
slow_query_log : 表示是否开启慢查询日志记录 (OFF关闭 ON开启)
slow_query_log_file:慢查询日志文件存储地址(docker情况下该地址是docker容器中的地址)
开启关闭慢查询
1. 命令行设置(临时生效)
# ON 开启、OFF 关闭
set global slow_query_log='ON';
# 日志存放位置,windows:'D://slow_query.log' linux: '/home/slow_query.log'
set global slow_query_log_file='/home/slow_query.log';
# 设置sql查询时间大于等于1秒就记录到慢查询日志中
set global long_query_time=1;
2. 配置文件修改
vim my.cnf
# 在 [mysqld] 下编辑或添加
slow_query_log = ON
slow_query_log_file = /home/slow_query.log
long_query_time = 1
# 修改配置文件之后需要重启mysql
systemctl restart mysqld.service
# docker 重启方法 docker restart mysql(容器名称)
3. 验证
# sql 执行,生成慢查询日志
select sleep(10);
# 到服务器查看日志
# Time: 2021-02-08T05:25:30.675299Z
# User@Host: root[root] @ [10.165.153.209] Id: 13
# Query_time: 10.000958 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
# SET timestamp=1612761930;
# select sleep(10);
# 观察是否有小于设置时间的日志记录,如果有的话,查看 log_queries_not_using_indexes 是否开启。
show variables like 'log_queries_not_using_indexes';
# 如果开启的话,会把没有使用到索引的SQL也存放到慢查询日志中,根据自己需求进行操作。
# 不需要的话就关掉
set global log_queries_not_using_indexes = 0;
# 再次观察服务器日志,看是否正常输出。