Mysql数据库未添加索引引发的生产事故
最近开发的新功能主要是首页的红点提示功能,某个用户登录系统app,然后进入某一个功能模块,
在该功能下面有很多地方可以操作,新功能就是根据用户信息查询当月是否存在新的数据。总共有四五
个地方如果出现增量数据时,需要红点提示。自己所在的项目组B主要是数据提供方,关联的项目组A
调用我们的接口获取数据,然后在做相应的逻辑处理,大致是这么一个流程。
根据关联方描述,大致的逻辑是第一次查询的时候,所有功能都添加红点提示,并且在数据库和
Redis缓存中记录一个红点查询的最大时间。当用户再次进入该页面,根据调用B项目组提供的
接口的数据进行比对,返回的最大时间大于A项目原有Redis中记录的最大时间,则表示有新数据。
如果返回的最大时间小于等于A项目原有Redis中记录的最大时间,则表示没有新数据。除了这个
逻辑处理之外,这个接口A项目组还有其他逻辑需要处理。
周五发版之后,周末两天都正常,没出什么问题,安心过周末。可是等到周一去到公司之后,
负责人在群里面发消息说App对应的功能模块页面加载不出来,还发了一张截图,一直在那里转
圈圈。看到这个消息,自己就知道大事不好,肯定出现性能问题才导致这种情况。原计划周一开的
会也立即取消,立马去找A项目组的人员排查问题,解决问题。
大概过了两天之后,再次开会时,他们才提起这个问题,主要就是性能不好导致的。项目组A
使用的是Mysql数据库,由于周一正式开始上班,大量人员开始使用app,导致查询红点的那个接口
性能急剧下降,然后就一直在转圈圈。听他们说他们临时的处理办法是,给Mysql中记录红点功能的
表添加一个索引,查询效率提升之后,问题也随之解决。听到这个结果,还是让自己挺意外的。那张
表总的数据量200w不到,而且每个用户约有5个红点,每次查询需要更新5次数据库数据和redis
缓存数据,将其更新为最新查询时间。由于需要频繁的进行更新操作,而且那个接口处理的逻辑还
比较复杂,他们一开始开发的时候,也没有添加索引,因此导致这个生产事故。
听到这个原因难免有些意外,可是这就是导致出现问题的直接原因。出现这种问题算是比较严重
的生产事故,最明显的提现就是对员工个人绩效考核的时候,薪资会受影响。也算是给自己上了一课,
数据库加索引很不不加索引的区别,不过前提是正确地添加索引,添加在正确的字段上才会有效果。
在讨论这个问题的时候,我们这边的负责人还给出了一个优化方案,当用户直接请求时,获取红点接口
数据,可直接先操作Redis,然后通过异步线程将最新查询时间更新到Mysql数据库,这样既提高了
接口的处理效率,同时也将最新数据更新到了数据库中。自己还是比较赞同这种方式,如果以后
遇到类似的问题,则可以采用相同的解决办法。
Mysql数据库未添加索引引发的生产事故的更多相关文章
- MySQL数据库授权与索引
MySQL数据库授权与索引 目录 MySQL数据库授权与索引 一.数据库用户授权 1. 授予权限 2. 查看权限 3. 删除权限 4. 全部权限(all privileges) 二.MySQL索引 1 ...
- MySQL数据库篇之索引原理与慢查询优化之一
主要内容: 一.索引的介绍 二.索引的原理 三.索引的数据结构 四.聚集索引与辅助索引 五.MySQL索引管理 六.测试索引 七.正确使用索引 八.联合索引与覆盖索引 九.查询优化神器--explai ...
- mysql数据库 事务和索引
1.MySQL数据库特性: 原子性(atomidity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一 ...
- MySQL数据库篇之索引原理与慢查询优化之二
接上篇 7️⃣ 正确使用索引 一.索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果, 我们在添加索引时,必须遵循以下问题: #1 范围问题,或者说条件 ...
- 【转】MYSQL数据库四种索引类型的简单使用--MYSQL组合索引“最左前缀”原则
MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...
- mysql数据库以加索引方式提高性能
数据库查询速率慢的情况下可以给对应的表加上对应的索引,能够有效的提高查询效率,mysql数据库添加索引的SQL入下: ALTER TABLE `table_name` ADD INDEX index_ ...
- MySQL数据库中的索引(二)——索引的使用,最左前缀原则
上文中,我们了解了MySQL不同引擎下索引的实现原理,在本文我们将继续探讨一下索引的使用以及优化. 创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. ...
- JDBC连接mysql数据库,添加数据
如下:其中添加/删除/修改只是sql字符串不同 //3.要执行的字符串 String sql="INSERT INTO t_student(NAME,age,email) VALUES('x ...
- MYSQL数据库学习六 索引的操作
6.1 索引 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过索引可以快速有效地查找与键值相关联的字段.根 ...
- mysql数据库中的索引有那些、有什么用
本文主要讲述了如何加速动态网站的MySQL索引分析和优化. 一.什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第 ...
随机推荐
- 释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握
释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇--简洁版],支持Linux/Windows部署安装 效果展示 PaddleNLP Pipel ...
- Linux-CentOS7 SSH免登陆
配置三台服务器,如下: 生成密钥 在三台机器(node1\node2\node3)执行以下命令,生成公钥与私钥. ssh-keygen -t rsa 执行该命令之后,按下三个回车即可,然后敲(三个回车 ...
- 解决Maven项目创建过慢问题
在创建时弹出Proerties位置添加键值对: archetypeCatalog internal idea 常用快捷键 Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N ...
- 史上最大电池!小米智能家庭屏Pro 8图赏
今天小米智能家庭屏 Pro 8正式开售,集智能家居中控,智能网关以及娱乐教育三大功能为一体,首发749元. 它是一款全新的智能生态产品中控屏,配备了7500mAh大容量电池以及通用性更好的USB Ty ...
- 【算法】【动态规划】动规dp解决不同路径两道经典OJ笔试题【力扣62-力扣63】超详细的动态规划入门详解,掌握动态规划的解题方法
[算法][动态规划]动规dp解决不同路径两道经典OJ笔试题[力扣62-力扣63]超详细的动态规划入门详解,掌握动态规划的解题方法 作者: @小小Programmer 这是我的主页:@小小Program ...
- 错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案
近日,在使用CascadeRCNN完成目标检测任务时,我在使用这个模型训练自己的数据集时出现了如下错误: tensorflow.python.framework.errors_impl.OutOfRa ...
- Kafka-启动时报错: ERROR Fatal error during KafkaServer startup. Prepare to shutdown
一.问题描述 在启动kafka时报错: ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server. ...
- Python Rich:美化终端显示效果
Rich库的功能就像它的名字一样,使Python编程更加丰富(rich),它帮助开发者在控制台(命令行)输出中创建丰富.多彩和具有格式化的文本. 本篇总结了如何使用Rich库让我们的命令行工具更加美观 ...
- ABC 304
T4 在一个平面上有一块面积无限的蛋糕,给出 \(n\) 颗草莓的所在位置和 \(a\,(b)\) 条平行与 \(x\,(y)\) 轴的切刀位置. 切刀会把蛋糕沿 \(x\,(y)\) 轴切开.因此一 ...
- 【LGR-148-Div.3】洛谷基础赛 #1 & MGOI Round I
[LGR-148-Div.3]洛谷基础赛 #1 & MGOI Round I T1 luoguP9502 『MGOI』Simple Round I | A. 魔法数字 \(100pts\) 水 ...