踩过的坑——MySQL删除索引要慎重

事情经过:
原表有两个字段的联合唯一索引unique key,因业务变更这两个字段不再唯一,需要去掉唯一索引。考虑到其中一个字段不仅作为唯一索引,还当作查询索引使用,去掉这个唯一索引,要新加这个字段的普通索引。
于是提了ddl数据库变更,删除唯一索引,新增普通索引。事故因此发生,当删除唯一索引后,还没来得及执行新增普通索引,数据库连接池就被占满了,导致页面所有请求都发生异常!
表中有500W数据,理论删除和新增索引都很快10s内可以完成。问题就出在了删除唯一索引后,系统的MQ处理任务有大量的根据某个字段查询更新的任务在执行,导致没了索引后任务变得相当慢,大量任务堆积占满了数据库连接池,系统崩溃。。。要知道,在没了索引的情况下,500W数据量下根据某个字段查询那是相当的慢。。。还没来得及执行新增普通索引系统l就已经崩溃了。临时解决方法就是停止系统,杀掉数据库查询和更新的事务,把新增普通索引ddl执行后再重启系统应用,系统会恢复正常。至于丢失的数据再想办法补吧。
结论:
这件事,告诉我们,删除数据库索引一定要慎重。即使一定要做,先要明确删除索引后带来的影响性,更换索引一定要遵循先增加后删除的原则,才能避免类似的事故发生。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值