mysql优化【MySQL慢查询日志总结】

遇到啥问题:


前端反应个别页面需要3-6秒才能有反应。消息反馈给JAVA开发组,发现各模块单元测试均没问题,只是组合起来出现了问题,为了找到慢的原因,把优化任务落实。我们需要使用到 MySQL慢查询日志功能。这个功能默认是关闭的,通过开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,再通过分析定位问题瓶颈,优化查询提高数据库系统的性能。

正文开始:


实验环境:centos 7.6+mysql 5.7
参数预说明:
slow_query_log:  ON | OFF,开启或关闭慢查询功能;
slow_query_log_file:  /PATH/TO/LOG_FILE,某指定路径下的文件;
long_query_time:  TIME(单位:秒,默认10秒),查询语句执行后超过多少秒后就记录到慢查询日志中;

检查当前慢查询状态(默认关)

show variables like 'slow_query_log';
 
 
进入centos7 查看 mysql慢查询配置信息
cat /etc/mycnf|less

编辑 mysql慢查询配置信息

vi my.cnf执行命令进行编辑配置文件,
在【mysqld】下增加
slow_query_log=1开启慢查询日志,
long_query_time=1,查询超过多长时间记录,
log_queries_not_using_indexes=1,记录没有索引的查询。
保存并重启mysql服务器,
重启Mysql服务器
service mysqld restart


查询慢查询的时间超过多少时间写入日志 
show variables like "%long%";
 
查询慢查询日志记录的开关和日志保存地址
show variables like 'slow_query%';

用winscp浏览数据库慢查询日志
 

在mysql交互命令行设置

使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)。


开启/关闭慢查询功能
show variables like 'slow_query_log';

set global  slow_query_log = ON;
set global  slow_query_log = OFF;

修改慢查询日志存放路径
set global slow_query_log_file = '/var/lib/mysql/test-slow.log';  

修改慢查询时间
set global long_query_time = 2;

实验修改时间操作不生效,未深究
具体解决方案可参考下文  https://www.cnblogs.com/hubo2/p/3530040.html 

设置无索引的查询
set global  log_queries_not_using_indexes = on;  //设置无索引的查询,会产生很多记录,不推荐开启,除非对数据库查询效率特别敏感。

退出登录-重新登录进去
查询慢查询的时间超过多少时间写入日志 
show variables like "%long%";
 
验证实验
select sleep(5); 
 
由上图发现,这些长时间的查询均已记录。

如果本文内容不能满足你,深入研究建议参考https://www.cnblogs.com/kerrycode/p/5593204.html
 

发布了96 篇原创文章 · 获赞 172 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/ai_64/article/details/100119022