数据库慢查询监控配置
Posted 七月的小尾巴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库慢查询监控配置相关的知识,希望对你有一定的参考价值。
MySql慢查询方法介绍
mysql 慢查询可以分析 MySql 语句查询性能问题的时候,可以再 MySql 记录中查询超过指标时间的语句,我们将超过指标时间的 SQL 语句称为 “慢查询”。MySql 自带的慢查询分析工具 mysqldumpslow 可以对慢查询日志进行分析;主要功能是统计sql的执行信息,其中包括:
- 出现次数(count)
- 执行最长时间(time)
- 累计总耗费时间(Time)
- 等待锁的时间(Lock)
- 发送给客户端的行总数(Rows)
- 扫描的行总数(Rows)
开启mysql配置
-
在部署的mysql服务器中,配置mysql配置文件,
vi etc/my.cnf
,然后在文件中添加# 为 1 则表示开启慢查询(记得注释不要加到配置文件中) slow_query_log=1 # 0.1则表示100ms,通常生产环境配置的都是0.1 long_query_time=0.1
注: 配置完成后,重新 mysql 服务配置才能生效,默认情况下,慢查询日志生成在 /var/lib/mysql 目录下,日志名称为{hostname}_slow-query.log
// 执行如下命令重启mysql systemctl restart mysqld
配置成功之后,我们在重新进入mysql
慢查询开启与关闭
我们配置成功之后,连接数据库查询日志是否开启,输入如下命令校验:
show variables like '%slow_query_log%';
慢查询日志分析
在/usr/bin目录下,使用mysql自带命令 mysqldumpslow
常用的参数:
- -s,是order的排序,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序
- -a,倒序排列
- -t,是top n的意思,即为返回前面多少条的数据
- -g,后边可以写一个正则匹配模式,大小写不敏感的
例如:mysqldumpslow -s c -t 20 host-slow.log
上述命令分别可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。 mysqldumpslow -t 10 -s t -g “left join” host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句。
图例中的命令:mysqldumpslow –s at -t 50 host-slow.log 显示出耗时最长的50个
SQL语句的执行信息
以Count: 32 Time=0.26s (8s) Lock=0.00s (0s) Rows=10.0 (320),wos_20120719[wos_20120719]@2host 为例:
Count: 32 该SQL总共执行32次
Time = 0.26s (8s) 平均每次执行该SQL耗时0.26秒,总共耗时32(次)*0.26(秒)=8秒。
Lock=0.00s(0s) lock时间0秒 Rows =10.0(320) 每次执行SQL影响数据库表中的10行记录,总共影响 10(行)*32(次)=320行记录
以上是关于数据库慢查询监控配置的主要内容,如果未能解决你的问题,请参考以下文章