Mysql之慢查询日志文件(慢查询分析)

在项目当中,特别是表里面数据大量的时候,查询非常慢,在复杂的系统中,多表关联查询就更加慢了,这就需要对数据库做优化或者对查询语句做优化,下面讲一下对查询语句做的优化,数据库优化在此先不做讲解。

默认情况下,Mysql是不启动慢查询日志的,这个需要您手工开启。

我使用的mysql版本:5.6.45

运行命令:show variables like '%quer%';

得到如下图所示

# mysql5.6版本以上,取消了参数log_slow_queries,更改为slow_query_log_file.这点需要大家注意一下.

默认这个slow_query_log 是OFF的,您可以使用如下命令开启:set global slow_query_log=1来开启。

并且还要在[mysqld]中添加如下信息:
[mysqld]
log-slow-queries=/var/log/mysql-slow.log

long_query_time = 4

log-queries-not-using-indexes
long_query_time 说明查询时间超过几秒记录到日志。
log-queries-not-using-indexes 记录没有使用索引的查询记录到日志

 

使用命令再来查看就已经开启了:show variables like '%quer%';

 

在Mysql5.1之后可以将慢查询的日志记录放到一张表里面。使得我们更加直观的分析日志,慢查询表在mysql架构下定义为slow_log,表结构定义如下;

使用命令:show create table mysql.slow_log;

参数log_output指定了慢查询输出的格式,默认为FILE,我们可以自己设定为table,然后就可以查询mysql架构下的slow_log表了,如下:

show variables like 'log_output';

设置log_output的格式:set global log_output='table';

设置睡眠时间:10秒

select  sleep(10);

slow_log表使用的是CSV引擎,对于大量数据(慢查询sql语句太多)查询可能不高,我们可以把它转换为MyISAM引擎来进一步提高查询效率,但是如果您已经启动了慢查询,就会报错。

命令设置引擎:alter table mysql.slow_log engine=myisam;

关闭慢查询就可以执行成功了,如下图

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章