SQL SERVER下非聚集索引引发的死锁问题

本文介绍了在SQL Server环境下,由于非聚集索引引起的死锁问题。并发执行的插入和更新操作导致死锁,具体表现为插入操作在完成索引更新时与更新操作的索引锁冲突。解决办法包括使用行级锁和在更新语句中添加with(nolock)以降低死锁风险。
摘要由CSDN通过智能技术生成

最近一个消息发送功能在测试的过程中遇到了因为非聚集索引引发的死锁问题,下面是小伙伴事后总结的内容,现分享出来。
(因为一些内容涉及到公司信息,所以只分享了其中部分内容,但是应该不影响整体阅读)

情景介绍

表名是Receiver,字段有id(主键,聚集索引),msgId(非聚集索引),receiver(非聚集索引),createTime,updateTime

并发执行的语句为

1、insert into Receiver select msgId,receiver,createTime,updateTime from tempTable
2update Receiver set updateTime=#{} where msgId=#{} and receiver in (#{})

发生场景

1、多线程(100个)执行Receiver的插入语句
2、

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值