mysql开启审计日志会导致性能下降(MySQL 一则慢日志监控误报的问题分析与解决)
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 一则慢日志监控误报的问题分析与解决的详细内容,更多关于MySQL慢日志监控误报的资料请关注开心学习网其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/1586775
- mysql数据库丢失怎么办(MySQL 数据丢失排查案例)
- mysql索引的机制(Mysql索引选择以及优化详解)
- mysql主从同步失败原因(mysql 主从复制如何跳过报错)
- MySql中date、datetime、time类型的区别
- 怎么运行xampp中的mysql(本地安装了mysql导致xampp的mysql服务启动失败)
- mysql8.0.25安装教程(Mysql8.0.17安装教程推荐)
- mysqlbinlog怎么分析(MySQL中使用binlog时格式该如何选择)
- mybatis为什么还用mysql(关于MyBatis连接MySql8.0版本的配置问题)
- docker运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- mysql学习之索引介绍及其原理(MySQL学习教程之聚簇索引)
- mysqlinnodb数据存储格式(MySQL InnoDB ReplicaSet副本集简单介绍)
- mysql权限设置
- mysql中date_format日期格式化
- mysql8.0安装及配置(MySQL 8.0 之不可见列的基本操作)
- mysql存储引擎是什么(详解mysql中的存储引擎)
- mysql日期与时间函数(MySQL日期函数与时间函数汇总MySQL 5.X)
- 全球科技界最有钱大佬TOP 15 你知道几位(全球科技界最有钱大佬TOP)
- 2主力后腰缺阵 泰山队奇兵有望获重用,赛季0出场,迎来中超首秀(泰山队奇兵有望获重用)
- 三分71 生死战爆发 篮网旧将丁威迪今天成奇兵,助队赢球(三分71生死战爆发)
- 《红 雄安》系列广播剧第一集 水上奇兵雁翎队(雄安系列广播剧第一集)
- 小说 小伙穿越成刘备,用现代知识指挥作战,众谋士都看呆了(小伙穿越成刘备)
- 解析葡萄牙6-1瑞士 进攻多点开花,贡萨洛-拉莫斯一战成名(解析葡萄牙6-1瑞士)
热门推荐
- php 静态方法(PHP的静态方法与普通方法用法实例分析)
- dedecms标签使用技巧(dedecms友情链接标签flink使用说明及实例代码)
- sqlserver数据库文件包括(详解SQL Server数据库状态和文件状态)
- django中filter的参数(详解django2中关于时间处理策略)
- docker容器访问权限(docker 容器自定义 hosts 网络访问操作)
- sql server中策略管理
- php的底层分析(PHP反射原理与用法深入分析)
- 云服务器怎么免费(有永久免费的云服务器吗?)
- python内置函数一览表(Python面向对象程序设计构造函数和析构函数用法分析)
- python模块学习之random模块(详解Python基础random模块随机数的生成)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9