multi update caused deadlock problem

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/dba45618-1d64-4661-891d-74cab09dddf1/deadlock-while-running-multiple-update-statements?forum=sqldatabaseengine

Update statement on your table introduces table scan. It means, that SQL Server reads every row in your table to check if row needs to be updated. During that read operation SQL Server  issues (U) update lock on the row. In case if row needs to be updated, it converts (U) lock to (X) exclusive lock and held that lock till end of transaction. (U) locks are incompatible with other (U) nor (X) locks. 

In your case you have 2 sessions waiting for each other. Each session puts X lock on (different) rows and tries to issue (U) lock and read the row updated by other session (with (X) lock held). It's a bit more complicated actually - you have more than 2 sessions involved but I hope you get an idea. 

Create an index on iPHMD_InterestList_ID to avoid table scans during update

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(313)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-12-26 datediff
2017-12-26 使用roslyn编译website项目
2013-12-26 单词博弈
点击右上角即可分享
微信分享提示