最近开发的新功能主要是首页的红点提示功能,某个用户登录系统app,然后进入某一个功能模块,

在该功能下面有很多地方可以操作,新功能就是根据用户信息查询当月是否存在新的数据。总共有四五

个地方如果出现增量数据时,需要红点提示。自己所在的项目组B主要是数据提供方,关联的项目组A

调用我们的接口获取数据,然后在做相应的逻辑处理,大致是这么一个流程。

  根据关联方描述,大致的逻辑是第一次查询的时候,所有功能都添加红点提示,并且在数据库和

Redis缓存中记录一个红点查询的最大时间。当用户再次进入该页面,根据调用B项目组提供的

接口的数据进行比对,返回的最大时间大于A项目原有Redis中记录的最大时间,则表示有新数据。

如果返回的最大时间小于等于A项目原有Redis中记录的最大时间,则表示没有新数据。除了这个

逻辑处理之外,这个接口A项目组还有其他逻辑需要处理。

  周五发版之后,周末两天都正常,没出什么问题,安心过周末。可是等到周一去到公司之后,

负责人在群里面发消息说App对应的功能模块页面加载不出来,还发了一张截图,一直在那里转

圈圈。看到这个消息,自己就知道大事不好,肯定出现性能问题才导致这种情况。原计划周一开的

会也立即取消,立马去找A项目组的人员排查问题,解决问题。

  大概过了两天之后,再次开会时,他们才提起这个问题,主要就是性能不好导致的。项目组A

使用的是Mysql数据库,由于周一正式开始上班,大量人员开始使用app,导致查询红点的那个接口

性能急剧下降,然后就一直在转圈圈。听他们说他们临时的处理办法是,给Mysql中记录红点功能的

表添加一个索引,查询效率提升之后,问题也随之解决。听到这个结果,还是让自己挺意外的。那张

表总的数据量200w不到,而且每个用户约有5个红点,每次查询需要更新5次数据库数据和redis

缓存数据,将其更新为最新查询时间。由于需要频繁的进行更新操作,而且那个接口处理的逻辑还

比较复杂,他们一开始开发的时候,也没有添加索引,因此导致这个生产事故。

  听到这个原因难免有些意外,可是这就是导致出现问题的直接原因。出现这种问题算是比较严重

的生产事故,最明显的提现就是对员工个人绩效考核的时候,薪资会受影响。也算是给自己上了一课,

数据库加索引很不不加索引的区别,不过前提是正确地添加索引,添加在正确的字段上才会有效果。

在讨论这个问题的时候,我们这边的负责人还给出了一个优化方案,当用户直接请求时,获取红点接口

数据,可直接先操作Redis,然后通过异步线程将最新查询时间更新到Mysql数据库,这样既提高了

接口的处理效率,同时也将最新数据更新到了数据库中。自己还是比较赞同这种方式,如果以后

遇到类似的问题,则可以采用相同的解决办法。

Mysql数据库未添加索引引发的生产事故的更多相关文章

  1. MySQL数据库授权与索引

    MySQL数据库授权与索引 目录 MySQL数据库授权与索引 一.数据库用户授权 1. 授予权限 2. 查看权限 3. 删除权限 4. 全部权限(all privileges) 二.MySQL索引 1 ...

  2. MySQL数据库篇之索引原理与慢查询优化之一

    主要内容: 一.索引的介绍 二.索引的原理 三.索引的数据结构 四.聚集索引与辅助索引 五.MySQL索引管理 六.测试索引 七.正确使用索引 八.联合索引与覆盖索引 九.查询优化神器--explai ...

  3. mysql数据库 事务和索引

    1.MySQL数据库特性:  原子性(atomidity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一 ...

  4. MySQL数据库篇之索引原理与慢查询优化之二

    接上篇 7️⃣  正确使用索引 一.索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果, 我们在添加索引时,必须遵循以下问题: #1 范围问题,或者说条件 ...

  5. 【转】MYSQL数据库四种索引类型的简单使用--MYSQL组合索引“最左前缀”原则

    MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...

  6. mysql数据库以加索引方式提高性能

    数据库查询速率慢的情况下可以给对应的表加上对应的索引,能够有效的提高查询效率,mysql数据库添加索引的SQL入下: ALTER TABLE `table_name` ADD INDEX index_ ...

  7. MySQL数据库中的索引(二)——索引的使用,最左前缀原则

    上文中,我们了解了MySQL不同引擎下索引的实现原理,在本文我们将继续探讨一下索引的使用以及优化. 创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. ...

  8. JDBC连接mysql数据库,添加数据

    如下:其中添加/删除/修改只是sql字符串不同 //3.要执行的字符串 String sql="INSERT INTO t_student(NAME,age,email) VALUES('x ...

  9. MYSQL数据库学习六 索引的操作

    6.1 索引 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过索引可以快速有效地查找与键值相关联的字段.根 ...

  10. mysql数据库中的索引有那些、有什么用

    本文主要讲述了如何加速动态网站的MySQL索引分析和优化. 一.什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第 ...

随机推荐

  1. Elasticsearch中的分页查询限制和近似去重统计

    Elasticsearch 前言 深度分页的问题 如何解决 修改默认值 使用search_after方法 scroll 滚动搜索 es中的近似聚合 总结 Elasticsearch 前言 最近工作中用 ...

  2. python快速入门【六】----真题测试

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  3. 强化学习技巧五:numba提速python程序

    numba是一款可以将python函数编译为机器代码的JIT编译器,经过numba编译的python代码(仅限数组运算),其运行速度可以接近C或FORTRAN语言. numba使用情况 使用numpy ...

  4. 强化学习技巧三:Python多进程

    1.Python多进程模块 Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Proce ...

  5. 关于debug一晚上的一些思考,做开发到底要养成什么习惯?

    总结:日志一定要写,日志一定要写,日志一定要写! 今天晚上是我学开发过程中很不一样的一晚,今晚学到了很多. 虽然我也只是一个开发的初学小白,今天的debug分享是我的一个小方法和一个小记录,如果大佬们 ...

  6. 阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。

    SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利.然而,当面临高并发场景时,理解并合理配置Spring Boot应用以达到最佳的并发处理能力至关重 ...

  7. XD刷机中执行reclaimdisks.sh的作用

    之前刷机提到在使用OEDA进行一键部署前,需先在所有DB节点上运行reclaimdisks.sh,也提到观察会释放pvs/vgs/lvs相对应的剩余空间. 本文以一套X8环境为例,来看下具体的表现,以 ...

  8. 【.net core学习一】.net 5.0 webapi部署

    服务器:windows server 2012 x64 1.安装IIS: 2.下载并安装 dotnet-hosting-5.0.13-win.exe 下载地址: https://dotnet.micr ...

  9. C# 12 中新增的八大功能你都知道吗?

    前言 转眼之间C#都已经更新到了12了,那么C# 12 中新增的八大功能你都了解过吗?今天我们来简单介绍一下C# 12 中新增的八大功能. C#/.NET该如何自学入门?:https://www.cn ...

  10. NC16679 [NOIP2003]神经网络

    题目链接 题目 题目描述 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神经网络 ...