索引导致服务宕机

本文记录了一次上线过程中遇到的问题,由于数据迁移时未考虑到重复数据和唯一键冲突,导致数据库锁等待和服务宕机。在解决过程中,删除唯一键并重新建立索引的操作引发了查询缓慢和系统崩溃,最终通过停止服务重建索引得以解决。提醒开发者在执行SQL时务必谨慎,尤其是在不停服情况下,避免类似问题发生。
摘要由CSDN通过智能技术生成

本次是记录一次上线过程中出现的问题,似乎每个上线流程中出现的问题,都是在生产时才会出现.......

介绍下上线内容,就是将一个系统的三张表的数据迁移到我系统,两张表里数据量各是500多万,还有一张表里是一千多万。因为迁移的数据不涉及什么业务上面的逻辑,故采用sql的形式直接导表。

导表时出现的问题:

1.迁移的数据中存在重复数据

2.迁移时经常出现唯一键冲突

3.迁移时导致数据库锁等待

上面3个是过程中主要出现问题,看着很少,但是在解决的过程中却花费了大量的时间,所以再此记录下,避免下次再犯。

先说第一个问题:存在重复的数据,这个没得说,是自己没有考虑到这一点。如果非要甩锅,也可以说是别人提供数据时为什么不去重(当然那个时候吵这个完全没哟意义),因为我们库里这类数据都是唯一的,想当然的认为对方提供的迁移数据也是唯一的,结果导致迁移时出现冲突,解决这个问题很快,写了一个删除重复的数据sql,把重复的都删除了(注意:这里是重复的都删除了,并没有删除其中一条,因为重复的数据,我们也无法确定究竟应该留下哪条,只能全部删除,此类数据只能另外处理了)。

OK,第一个问题解决了,临时表里已经没有重复数据了,以为万事大吉了,不料刚执行insert 语句时(使用:insert into table (select 临时表) 进行迁移的方式),又报唯一键冲突。以为是删除没有删干净,但是拿报错的数据去临时表里确实只有一条数据,不应该报冲突的,一直找不到原因,sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值