MySQL高级篇之慢查询日志相关

一、前言

MySQL的慢查询日志是MySQL提供的一种日志记录,它用于记录在MySQL中响应时间超过阀值的语句,具体是指运行时间超过long_query_time的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上(不是大于等于,是大于)的语句。这个值可以设置的,一般一条SQL查询忍耐极限是3秒,如果一条SQL执行时间超过3秒,那么我们就算作慢SQL,然后再结合explain进行全面的分析。

默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动设置这个参数。如果不是调优需要的话,一般不建议启动该参数,英文开启了慢查询日志会或多或少带来一定的性能影响,慢查询日志支持将日志写入文件。

二、案例

♦查看慢查询日志是否开启

show variables like ‘%slow_query_log%’

MySQL高级篇之慢查询日志相关的照片 - 1

默认情况下,slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启

♦开启慢查询日志

MySQL高级篇之慢查询日志相关的照片 - 3

使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效,如果想要永久生效,就必须修改配置文件my.cnf。在配置文件中增加如下两行

slow_query_log=1
slow_query_log_file=/var/lib/mysql/queen-slow.log

这种配置不能长久开启,会影响性能。

♦开启慢查询日志记录的地方

MySQL高级篇之慢查询日志相关的照片 - 5

♦通过案例分析

我们将阀值long_query_time设置为3,代表大于3秒的SQL都属于MySQL

MySQL高级篇之慢查询日志相关的照片 - 7

从上图我们看到设置慢查询的阀值为3秒后,再次查看后,为什么设置后看不出变化?

这之后我们需要重新连接或新开启一个会话才能看到修改值或者使用show global variables like ‘%slow_query_time%’来查看是否变化。

MySQL高级篇之慢查询日志相关的照片 - 9

♦下面我们写一段SQL,记录一下超过3秒的SQL

MySQL高级篇之慢查询日志相关的照片 - 11

由上面的记录可知,当开启慢查询日志功能后,慢查询的日志记录被记录到/var/lib/mysql/queen-slow.log文件中

 

MySQL高级篇之慢查询日志相关的照片 - 13

由上图可知,超过3秒的慢查询SQL都被记录到了慢查询日志文件queen-slow.log中

♦查询当前系统中有多少条慢查询SQL

MySQL高级篇之慢查询日志相关的照片 - 15

这条SQL语句可以作为系统健康检查度来使用

♦对于上面的操作如果想永久的生效,在配置文件/etc/my.cnf的[mysqld]里面配置以下内容:

slow_query_log=1;    #开启慢日志
show_query_log_file=/var/lib/mysql/queen-slow.log;    #日志存放位置
long_query_time=3;    #超时时间3秒(超过3秒就会被记录下来)
log_output=FILE;

♦在生产环境中,如果手工分析日志、查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow

MySQL高级篇之慢查询日志相关的照片 - 17

使用mysqldumpslow –help;可以查看mysqldumpslow相关参数用法,类似man -help用法

下面介绍一下最常用的几个命令用法:

得到返回记录集最多的10个SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/queen-slow.log

得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/queen-slow.log

得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/queen-slow.log

建议在使用这些命令时结合|和more使用,否则有可能出现爆屏情况
mysqldumpslow -s r -t 10 /var/lib/mysql/queen-slow.log | more

至此,我们关于MySQL高级篇之慢查询日志相关介绍完毕。
博客地址:http://www.marsitman.com/mysql/mysql-slow.html
版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。

 

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!


点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注