遇到啥问题:
前端反应个别页面需要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