最近一个消息发送功能在测试的过程中遇到了因为非聚集索引引发的死锁问题,下面是小伙伴事后总结的内容,现分享出来。
(因为一些内容涉及到公司信息,所以只分享了其中部分内容,但是应该不影响整体阅读)
情景介绍
表名是Receiver,字段有id(主键,聚集索引),msgId(非聚集索引),receiver(非聚集索引),createTime,updateTime
并发执行的语句为
1、insert into Receiver select msgId,receiver,createTime,updateTime from tempTable
2、update Receiver set updateTime=#{} where msgId=#{} and receiver in (#{})
发生场景
1、多线程(100个)执行Receiver的插入语句
2、