34,499
社区成员




SQL Server在死锁形成5秒后会杀死其中一个造成死锁的连接,按理应该是不能形成死锁了,为什么还是会有死锁呢?
我使用两个连接互相访问修改同一条数据,在短暂死锁5秒后,SqlServer就杀死其中一个连接了,按理SqlServer形成的任何死锁都会在5秒内解除,那为什么还会有超过5秒,甚至更长时间的死锁呢?
如何才能复现超过5秒的死锁?有大佬能解答一波吗?
https://blog.csdn.net/yenange/article/details/73883915
你可以按我博客里面的来运行,如果中途不人工干涉,至少要三十多秒才可以结束。
5秒,只是说检测到有死锁后的检测和处理时间,不是一定卡在5秒这个点。
2个事务,如果前面没有检测到死锁,已经加了锁,正在执行的事务不可能主动作为牺牲品。
要检测到了死锁,后面处理才在5秒内。
这个就跟excel文档一样的,两个人同时修改,只能是其中一个人修改成功。其他人必须等他修改完成刷新之后才能修改,SQL SQLSERVER 死锁也是这个原理。死锁是很正常的,特别是用户多的情况下。