快捷搜索:  汽车  科技

mysql 日志分析工具(一文了解Mysql的慢日志)

mysql 日志分析工具(一文了解Mysql的慢日志)我这里是已经开启了,如果没开启的可以修改配置文件my.cnf,一般是在目录etc/my.cnf或者/etc/mysql/my.cnf,在配置文件的[mysqld]中配置如下内容。slow_query_log_file:慢日志记录文件所在的目录show variables like '%slow_query_log%'这里两个属性分别表示slow_query_log:是否开启慢日志查询,ON:开启 OFF:关闭

当应用程序响应慢时,你是不是首先想到数据的问题,慢怎么排查是否有慢sql呢,如果这个都不会是不是太渣了。

mysql 日志分析工具(一文了解Mysql的慢日志)(1)

Mysql的慢日志是mysql提供的一种日志记录,它用来记录在mysql中响应时间超过阈值的语句,具体指运行时间超过配置文件中long_query_time值的sql,则会被记录到慢查询日志中。

如果需要使用慢日志查询记录首先需要开启慢日志查询。

使用命令查看是否开启慢日志查询

show variables like '%slow_query_log%'

mysql 日志分析工具(一文了解Mysql的慢日志)(2)

这里两个属性分别表示

slow_query_log:是否开启慢日志查询,ON:开启 OFF:关闭

slow_query_log_file:慢日志记录文件所在的目录

我这里是已经开启了,如果没开启的可以修改配置文件my.cnf,一般是在目录etc/my.cnf或者/etc/mysql/my.cnf,在配置文件的[mysqld]中配置如下内容。

slow_query_log=1

slow-query-log-file=/www/server/data/mysql-slow.log

如果只是临时开启可以使用命令开启,只对当前会话有效。

Set global slow_query_log = 1

慢日志功能默认情况是关闭的,只当需要调优的时候才开启,因为开启或多或少会影响性能。刚说到当mysql查询响应时间超过配置的阈值时,才会记录到慢sql中,那这个阈值怎么查看,可以直接使用命令查看

mysql 日志分析工具(一文了解Mysql的慢日志)(3)

long_query_time:表示响应时间操作3秒的将会被记录

这个值也可以在配置文件my.cnf中配置,下面我们就模拟一条慢sql,mysql中有一个睡眠函数sleep 那就执行一条睡眠4秒的语句。

mysql 日志分析工具(一文了解Mysql的慢日志)(4)

接着我们去慢日志文件中看看有没有被记录。

mysql 日志分析工具(一文了解Mysql的慢日志)(5)

我们看到确实记录了,也是使用命令查看记录了多少条慢日志,

show global status like '%Slow_queries%';

mysql 日志分析工具(一文了解Mysql的慢日志)(6)

有同学会问,如果是在生产环境中可能会有几十条甚至上百条慢日志记录,这么多有没有什么工具可以分析它呢,答案肯定是有的。

Mysql自带的慢日志分析工具mysqldumpslow,可以按慢sql的访问次数、锁定时间、返回记录、查询时间等对慢日志记录进行筛选,默认mysqldumpslow是在mysql的bin目录下。

mysql 日志分析工具(一文了解Mysql的慢日志)(7)

那怎么使用呢,例如我们需要返回记录集最多的十个慢sql

/www/server/mysql/bin/mysqldumpslow -s r -t 10 /www/server/data/mysql-slow.log

mysql 日志分析工具(一文了解Mysql的慢日志)(8)

显示了刚刚我们所记录的那条慢日志,再比如返回访问次数最多的5个慢sql

/www/server/mysql/bin/mysqldumpslow -s -c -t 5 /www/server/data/mysql-slow.log

mysql 日志分析工具(一文了解Mysql的慢日志)(9)

得到了慢日志,我们就可以通过日志优化工具explain和showprofile 进行性能优化。

----END----

你的一个赞一个关注是我创作的动力,是我持续输出的能量源泉,老铁关注一波吧

猜您喜欢: