SQL Server在死锁形成5秒后会杀死其中一个造成死锁的连接,按理应该是不能形成死锁了,为什么还是会有死锁呢?

友善的穿山甲兄弟 2023-09-01 14:24:45

SQL Server在死锁形成5秒后会杀死其中一个造成死锁的连接,按理应该是不能形成死锁了,为什么还是会有死锁呢?

我使用两个连接互相访问修改同一条数据,在短暂死锁5秒后,SqlServer就杀死其中一个连接了,按理SqlServer形成的任何死锁都会在5秒内解除,那为什么还会有超过5秒,甚至更长时间的死锁呢?

如何才能复现超过5秒的死锁?有大佬能解答一波吗?

...全文
216 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2023-09-04
精选
  • 打赏
  • 举报
回复 1

https://blog.csdn.net/yenange/article/details/73883915
你可以按我博客里面的来运行,如果中途不人工干涉,至少要三十多秒才可以结束。
5秒,只是说检测到有死锁后的检测和处理时间,不是一定卡在5秒这个点。
2个事务,如果前面没有检测到死锁,已经加了锁,正在执行的事务不可能主动作为牺牲品。
要检测到了死锁,后面处理才在5秒内。

img


https://learn.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms178104(v=sql.105)

  • 举报
回复
@吉普赛的歌 感谢版主大佬的解答,无论是30秒才解锁或者是1分钟10分钟才解锁,终究还是会自动解锁。也就是说SqlServer的死锁根本无需担心是吗?
吉普赛的歌 2023-09-04
  • 举报
回复
@友善的穿山甲兄弟 怎么可能无须担心呢?难道有医院就不怕出车祸吗? 要仔细分析死锁的成因,而不是无所顾忌。没有一个简单的方案,需要你去钻研。
  • 举报
回复
@吉普赛的歌 理论上有这个5秒解锁,就不会出现死锁了啊,或者说即使出现死锁,也不会有多大影响。
3条回复
daigua1987 2023-09-06
  • 打赏
  • 举报
回复

这个就跟excel文档一样的,两个人同时修改,只能是其中一个人修改成功。其他人必须等他修改完成刷新之后才能修改,SQL SQLSERVER 死锁也是这个原理。死锁是很正常的,特别是用户多的情况下。

吉普赛的歌 2023-09-07
  • 举报
回复
@daigua1987 你说的叫锁,不叫死锁。
Li 学长 2023-09-01
  • 打赏
  • 举报
回复

创建两个或更多的数据库连接,每个连接都尝试访问或修改相同的数据。
确保这些操作相互依赖,使得它们都无法释放所持有的锁。
尝试在两个连接之间创建死锁,并观察它们是否能够自动解除。
如果死锁持续时间超过了5秒,请检查SQL Server的日志以确定是否存在其他问题,例如死锁检测机制未正确配置或被禁用。

  • 举报
回复
@Li 学长 两个连接,三个连接,互相锁住,然后都解锁了。我想知道既然5秒自动解锁,那是不是代表SqlServer永远不会死锁?

34,623

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧