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 数据类型选择原则)
- phpmysql怎么搭建(PHP使用PDO、mysqli扩展实现与数据库交互操作详解)
- mysql安装失败原因和解决方法(MySQL MGR搭建过程中常遇见的问题及解决办法)
- mysql常见的存储引擎(如何选择MySQL的存储引擎?)
- mysql中如何设置多个主键(Mysql 增加主键或者修改主键的sql语句操作)
- mysql权限收回(MySQL如何利用DCL管理用户和控制权限)
- mysql数据类型图解(MySQL数据库主从技术GTID大揭秘)
- mysql的索引及其介绍总结(浅析MysQL B-Tree 索引)
- mysql的binlog几种模式(MySQL系列之redo log、undo log和binlog详解)
- mysqlinnodb数据存储格式(MySQL InnoDB ReplicaSet副本集简单介绍)
- mysql几种连接方式(简单谈谈mysql左连接内连接)
- mysql锁类型大全(简单了解 MySQL 中相关的锁)
- SQL SERVER与MySQL数据类型的对应关系
- dockermysql实例(docker 连接宿主Mysql操作)
- 招财化煞神兽,金蟾变了(招财化煞神兽金蟾变了)
- 26岁杨紫的白素贞遇上24岁鞠婧祎,哪个最美(26岁杨紫的白素贞遇上24岁鞠婧祎)
- 鞠婧祎和杨紫两种风格的女生,你心里谁比较美(鞠婧祎和杨紫两种风格的女生)
- 三千年第一美女鞠婧祎出演白素贞pk杨紫,颜值胜赵雅芝王祖贤(三千年第一美女鞠婧祎出演白素贞pk杨紫)
- 成都轨道交通13号线一期工程最新进展(成都轨道交通13号线一期工程最新进展)
- 越南没事(越南没事情做)
热门推荐
- python元组汇总(Python数据类型之Tuple元组实例详解)
- mysql数据结构讲解(详解MySQL 数据库隔离级别与MVCC)
- php面向对象3大特征(PHP面向对象程序设计重载overloading操作详解)
- docker怎么设置redis(docker安装redis并以配置文件方式启动详解)
- win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法(win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法)
- vue按需引入elementui组件(vue ElementUI实现异步加载树)
- css子块级元素有用吗(css中行内元素和块级元素的区别)
- sqlserver2012知识点(SQL Server 2012 安全概述)
- h5抽奖的弹框制作(html5实现九宫格抽奖可固定抽中某项奖品)
- jquery导航栏动画(jQuery实现带展开动画的导航栏效果)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9