1.引入
当我们通过我们编写的sql去操作MySQL数据库的时候,我们会发现由于SQL语句本身的原因,部分的SQL语句的执行会比较慢,从而会导致整个系统的运行不流畅。那么如果说MySQL提供一个功能,专门给我们解决把执行的慢的那一部分语句给标注出来。这样我们解决问题就会更加的快速。那么下面呢,我们就一起来看一下MySQL提供的慢查询日志。
2.什么是MySQL的慢查询日志?
所谓的慢查询日志,就是和其字面意思一样,是MySQL数据库提供的一种日志记录。它主要是用于记录在MySQL中响应时间超过阙值的语句。具体的就是指运行时间超过long_query_time值的SQL。就会被记录到日志中去。long_query_time默认的值大小是10。默认的情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这一个参数。当然,如果不是调优的需要,一般是不建议开启这一个参数。因为开启慢查询日志会占用空间。这样或多或少会带来一定的性能的影响。
3.如何查看MySQL的慢查询日志是否开启?
(1).查看是否开启:
show variables like '%low_query_log%';
查询结果为:
(2).如何开启?
set global slow_query_log = 1;
查看结果:
注意:设置开启慢查询日志仅仅只对当前的操作有效,如果需要永久的生效,可以在配置文件中设置如下参数。但是一般这样的操作是属于运维经理或者是专业的DBA来操作的。
slow_query_log=1
show_query_log_file=C:\ProgramData\MySQL\MySQL Server 5.5\Data\DYHGUJX80GYHV89-slow.log
4.什么样子的sql才会被记录到慢查询日志文件中呢,如何使用?
一般慢的定义是有参数long_query_time控制,默认值为10.我们先在命令界面查看其大小以及对应的情况:
show variables like '%long_query_time%';
查询结果为:
也就是说这一个SQL语句执行的时间大于10秒就会被记录到我们指定的文件中去。
一般情况系统在运行的时候一条SQL执行10秒几乎是不可能的。那么我们就需要去调整这一个阈值。
调整使用如下命令:
set global long_query_time = 2;
新开一个会话:再次查看阈值:
5.测试
由于没有足够大的数据量用来测试。那么我们使用线程的方式来实现延时执行SQL语句:
查看我们的慢查询日志文件中是否已经有记录:
点击查看里面的内容信息:
查看当前的系统中有多少条慢查询记录:(该语句可以当做是系统是否有问题的一个检查标准)
6.MySQL数据库日志查询分析工具:mysqldumpslow(略)