简单分析MySQL 一则慢日志监控误报问题

news/2024/7/2 23:06:44
这篇文章主要介绍了MySQL 一则慢日志监控误报的问题分析与解决,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下

之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原因,发现数据库的慢日志报警有些奇怪,主要表现是慢日志报警不属实,收到报警的即时通信提醒后,隔一会去数据库里面去排查,发现慢日志的性能似乎没有那么差(我设置的一个阈值是60)。

排查过几次代码层面的逻辑,没有发现明显的问题,几次下来,问题依旧,这可激发了修正的念头,决定认真看看到底是什么原因。后端使用的是基于ORM的模式,数据都存储在模型MySQL_slowlog_sql_history对应的表中。

代码层面是类似如下的逻辑:

MySQL_slowlog_sql_history.objects.filter(create_time__gt='2020-01-29 11:00:00',Query_time_pct_95__gt=60)

传入的时间是动态的,然后阈值取60秒,按照预期如果报警出来就肯定是有问题的。为了进一步验证,我把阈值时间修改为600,竟然还是报出错误,执行7~8秒的慢查询照样会报出来。我使用debug的方式得到了ORM解析得到的SQL:

SELECT...`mysql_slowlog_sql_history`.`create_time`, `mysql_slowlog_sql_history`.`memo` 
FROM `mysql_slowlog_sql_history` 
WHERE (`mysql_slowlog_sql_history`.`create_time` > '2020-01-29 11:00:00' AND `mysql_slowlog_sql_history`.`Query_time_pct_95` > '600') LIMIT 21; 
args=(u'2020-01-29 11:00:00', u'600')

看SQL没问题啊。我自己在客户端执行,确实是好好的,只过滤出了600秒以上的结果。

select ip_addr,db_port from mysql_slowlog_sql_history 
where create_time>'2020-01-29 00:00:00' and Query_time_pct_95 > 600;

对着这个结果我开始反思,到底是什么原因呢?我看着模型的字段定义开始有所悟,然后快速验证了一番。为了方便说明,我创建了一个测试表test_dummy.

create table test_dummy(id int primary key auto_increment,Query_time_pct_95 varchar(100));

初始化几条数据。

insert into test_dummy(Query_time_pct_95 ) values('8.83736'),('7.70056'),('5.09871'),('4.32582');
+----+-------------------+
| id | Query_time_pct_95 |
+----+-------------------+
| 1 | 8.83736      |
| 4 | 7.70056      |
| 7 | 5.09871      |
| 10 | 4.32582      |
+----+-------------------+
4 rows in set (0.00 sec)

然后使用如下的两条语句来进行对比测试。

mysql> select *from test_dummy where Query_time_pct_95>600;
Empty set (0.00 sec)
mysql> select *from test_dummy where Query_time_pct_95>'600';
+----+-------------------+
| id | Query_time_pct_95 |
+----+-------------------+
| 1 | 8.837364     |
| 2 | 7.700558     |
+----+-------------------+
2 rows in set (0.00 sec)

可以看到,使用了整型数值的时候,没有返回结果,而使用了字符类型的时候,匹配的结果是按照最左匹配的模式来进行过滤的,也就意味着在数据库层面对于浮点数的处理还是差别很大的。所以这个问题的快速修复方式就是在数据库层面修改数据表的类型为float,而在精度损失方面这块的影响是可以忽略不计的。再次验证,这个问题就没有再次出现。

以上就是MySQL 一则慢日志监控误报的问题分析与解决的详细内容。


http://lihuaxi.xjx100.cn/news/285824.html

相关文章

一直在努力的你是否也是这样的(经典语录总结)

1.下次再遇见喜欢的人,一定要提醒自己,只做朋友,只谈笑风生,不可以动情,不远不近的欣赏,淡淡的喜欢,不至于最后乱了初心,败了芳华。 ——杨绛 2.走好选择的路,别选择好走…

前缀和 + ST表 ---- CF 1556 E. Equilibrium(两个序列 + - 操作使得每位相等) 详解

题目连接 题目大意&#xff1a; 就是给你两个长度为nnn的a,ba,ba,b数组&#xff0c;给你q∈[1,1e5]q\in[1,1e5]q∈[1,1e5]次询问&#xff0c;每次询问一个区间[l,r][l,r][l,r] 你对这个区间里面的数可以进行一下操作 取出偶数个位置 l≤pos1<pos2<....<posz≤r∣[z%…

手写 30 个主流机器学习算法,代码超 3 万行,全都开源了!

点击上方“视学算法”&#xff0c;选择“星标”公众号第一时间获取价值内容本文经机器之心&#xff08;ID&#xff1a;almosthuman2014&#xff09;授权转载&#xff0c;禁二次转载参与&#xff1a;思源、一鸣、张倩用 NumPy 手写所有主流 ML 模型&#xff0c;普林斯顿博士后 D…

赵本山:我的时代还没有结束 | Python告诉你

作者 | 丁彦军来源 | 恋习Python&#xff08;ID: sldata2017&#xff09;【AI科技大本营按】今年春晚的小品好看吗&#xff1f;没有了赵本山的春晚总觉得少了点什么&#xff0c;然而许久不登春晚舞台的本山大叔借着B站的东风证明了「你大爷还是你大爷」。最近很多人被“改革春…

RSS 语法概述

RSS 指 Really Simple Syndication&#xff08;真正简易联合&#xff09;&#xff0c;RSS 2.0 的语法很简单&#xff0c;也很严格。RSS 用于在网站间分享信息。RSS 语法 RSS 2.0 的语法很简单&#xff0c;也很严格。 RSS 如何工作 RSS 用于在网站间分享信息。 使用 RSS&…

[NOI2015]程序自动分析

题解&#xff1a;并查集&#xff0c;因为数据比较大嘛&#xff0c;你要是想再所以如果开1e9的数组大小&#xff0c;那毫无疑问&#xff0c;基佬紫等着你。 所以这个题离散化用了map这个容器。 首先&#xff0c;遍历一遍e1的时候&#xff0c;把他们之间相等的都给连到同一个集合…

C++中的Socket编程使用协议发送图片

使用&#xff1a; &#xff08;1&#xff09;首先运行服务端&#xff0c;待服务端运行起来&#xff1b; &#xff08;2&#xff09;最后运行客户端&#xff0c;输入要传输文件到哪个目标机器的IP地址&#xff1b; &#xff08;3&#xff09;输入传输文件的路径及文件&#xff0…

泰晤士最新排名出炉,这两所大学跌惨了

香港中文大学、香港理工大学自近日被黑衣暴徒抢占沦入“暴力战场”后&#xff0c;校园满目疮痍&#xff0c;国际声誉严重受损&#xff0c;近日就连大学排名也宣告触礁。根据英国《泰晤士高等教育》公布的排名&#xff0c;港理大工程与科技学科较去年大跌26名&#xff0c;港中大…