一、慢查询日志概念MySQL的抛出查询日志是MySQL提供的日志记录,用于在MySQL中记录响应时间超过阈值的语句。 具体怎么玩先看看下面的演示吧。二、慢查询日志配置默认情况下,slow_query_log的值为OFF,表示滚动查询日志无效。 * * showvariableslike‘% slow _ query _ log %’; *确认状态。 如下所示。
第一个参数slow_query_log表示没有打开滚动查询日志(默认)。
第二个参数指示此慢速查询日志的文件位于该文件夹中。 请忽略此名称是默认创建的。 如果要永久打开低速查询并指定低速查询日志的位置和名称,可以在/etc/my.cnf下设置。
三、打开慢日志查询使用命令set global slow_query_log=1;
这样就成功了。 在此之前,您必须知道滚动查询日志的默认查询值。 通俗地说,就是要花多长时间才能晚。 当然,这个值可以自己设定。 )
命令show variables like ‘long_query_time’;
这里我以前设置过。 你第一次看应该是10秒。 但是我们可以自己设定命令。
命令set global long_query_time=4;
看这里是啊? 3、请注意我们的设置是怎么成功的。 但是,我用别的词查。 来看看
showglobalvariableslike‘% long _ query _ time %’; 可以看出修正成功了。
OK现在,让我们测试一下这个滚动查询是如何记录的。
命令选择步骤(5; 这意味着等5秒钟后再询问。 正好比我们的设定查询值多一秒就会被记录下来。
第一个:
在这里等待5秒钟
之后:
还记得上述slow_query_log_file的参数吗? 缓慢的sql语句保存在该文件中。 让我查一下。
输入两行命令。 一个是去那个目录,另一个是检查。
之后,我们仔细看了看,看到我们刚才写的句子selectsleep(5)了吗; 表示记录成功。 包括timestamp睡了多久(毫秒值)。 现在,您可以优化根据查询语句添加索引的列的查询语句。 索引后更新一期。
我们玩到这里其实也一样。 另一种情况是,请确保已将一些较慢的sql语句记录为使用showglobalstatuslike“% slow _ queries %”;
因为之前测试过,所以有记录。
日志分析工具mysqldumpslow在实际生产环境中,人工分析日志、查找和分析SQL显然是一项体力活,MySQL提供了日志分析工具mysqldumpslow
查看mysqldumpslow帮助信息:
请注意,这是在linux命令行上输出的。 请不要用mysql输入。 别问我是怎么知道的。 )
常用的只有这个。 具体来说,你可以看到刚才命令的英语。 不会的英语我会翻译。
我给你们看几个例子:
最多返回记录集中的10个SQL。
mysqldumpslow -s r -t 10 /。 (这里是你慢慢查看日志的路径,位置可能因人而异。 )
此图像的路径slow_query_log_file。
我们现在利用配置文件永久打开慢速日志。 (工作中大家不要乱动,小心被dba叫去喝茶! )
首先,最初没有在配置文件中设置,所以重新启动mysql以检查状态。
(1)用ps -ef |grep mysql查看mysql的流程
)2)我使用的是Centos7重启命令为systemctl restart mysql.service
Centos6是service mysqld restart
)3)重启后,再试一次。
默认值为关闭。 现在,让我们在这里设置/etc/my.cnf文件
**
注*
把这里展开,想看的东西不想看的东西可以跳过。 使用which mysql,可以显示包含以下mysql的目录:
同样,其他软件也一样。
然后呢
在mysql --verbose --help|grep -A 1 ‘Default options’中,可以显示默认配置文件的路径。
现在,让我们在这里设置/etc/my.cnf文件
文件是这样的。 添加
log_output=file
slow_query_log=on
sow _ query _ log _ file=/tmp/MySQL-slow.log
log _ queries _ not _ using _ indexes=on
long_query_time=1
追加结束后是这样的。
然后重新启动mysql服务器。
然后重新进入mysql。
此时,我们发现默认情况下打开的滚动查询日志目录是我们设置的。