本次是记录一次上线过程中出现的问题,似乎每个上线流程中出现的问题,都是在生产时才会出现.......
介绍下上线内容,就是将一个系统的三张表的数据迁移到我系统,两张表里数据量各是500多万,还有一张表里是一千多万。因为迁移的数据不涉及什么业务上面的逻辑,故采用sql的形式直接导表。
导表时出现的问题:
1.迁移的数据中存在重复数据
2.迁移时经常出现唯一键冲突
3.迁移时导致数据库锁等待
上面3个是过程中主要出现问题,看着很少,但是在解决的过程中却花费了大量的时间,所以再此记录下,避免下次再犯。
先说第一个问题:存在重复的数据,这个没得说,是自己没有考虑到这一点。如果非要甩锅,也可以说是别人提供数据时为什么不去重(当然那个时候吵这个完全没哟意义),因为我们库里这类数据都是唯一的,想当然的认为对方提供的迁移数据也是唯一的,结果导致迁移时出现冲突,解决这个问题很快,写了一个删除重复的数据sql,把重复的都删除了(注意:这里是重复的都删除了,并没有删除其中一条,因为重复的数据,我们也无法确定究竟应该留下哪条,只能全部删除,此类数据只能另外处理了)。
OK,第一个问题解决了,临时表里已经没有重复数据了,以为万事大吉了,不料刚执行insert 语句时(使用:insert into table (select 临时表) 进行迁移的方式),又报唯一键冲突。以为是删除没有删干净,但是拿报错的数据去临时表里确实只有一条数据,不应该报冲突的,一直找不到原因,sql