最近需要改动线上一个有千万条记录的表,涉及到加字段操作,这个表有索引,按照经验,为了加速修改表结构,去掉索引。由于我删除的是Unique Index, 而服务一直在写,程序依赖数据库的唯一索引去重,导致瞬间有重复数据,唯一索引重新加上时会报Duplicated Key entry Error,回放事件我们的数据表,之前是有UNIQUE INDEX(cuid, aid), 因为去掉索引,服务持续写入,导致有重复记录,所幸的是,这是一个统计表, 不影响功能,所以需要找出重复的记录12345select cuid,aid from (select cuid, aid,count(1) as numfrom register_chngroup by cuid,aid having num > 1) t;显示有8条记录,如果手动删除,是很慢且愚蠢的做法,还是用 SQL 执行,镇定之后执行1234567delete from register_chn where (cuid,aid) in (select cuid,aid from (select cuid, aid,count(1) as numfrom register_chngroup by cuid,aid having num > 1) t);影响了8条记录.然后瞬间加上索引.所幸是成功了, 事实上当时的合理操作应该是用事务。123
...
继续阅读
(25)