咨询死锁问题(deadlock)

Rodger_dullknife 2018-02-08 06:02:19
当sql发现session A 阻塞了session B,形成deadlock时,系统在哪个时间节点,或者什么规则会kill掉阻塞的session。我这块知识不太清楚,是否有类似timeout的内容,到了时间点就kill进程。请大家帮助
...全文
1369 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2018-02-13
  • 打赏
  • 举报
回复
据说SQL Server会选择一个回滚成本较小的进程做回滚, 或优先照顾系统工具的进程,如Replication, SQLJob的进程与一般进程产生死锁时,较大概率会kill掉一般进程.
zjcxc 元老 2018-02-09
  • 打赏
  • 举报
回复
简单地说 阻塞和死锁都是过独木桥,不同的是 阻塞是同一个方向,虽然要等,但总能等到过去,所以阻塞会一直等,真到超时 而死锁是相对方向,两个中总得有一个退出才能继续(也就是死锁中的牺牲品),都不让都不能过,所以检测到死没没什么好说的,一定是立马选择一个 kill 掉(自动死锁检测),不会等待
OwenZeng_DBA 2018-02-09
  • 打赏
  • 举报
回复
TO #2 对的。模拟死锁的话,你百度 深入浅出SQL Server中的死锁 。我就不贴链接了,不是CSDN的。
吉普赛的歌 版主 2018-02-09
  • 打赏
  • 举报
回复
邹老师说得真形象! 在实际场合中, 如何检测死锁、减少死锁才是关键。
Rodger_dullknife 2018-02-08
  • 打赏
  • 举报
回复
还有如果阻塞的话,数据库是否不会自动牺牲一个?
Rodger_dullknife 2018-02-08
  • 打赏
  • 举报
回复
请问我如何模拟死锁
OwenZeng_DBA 2018-02-08
  • 打赏
  • 举报
回复
这里有2个点, 1.阻塞和死锁是两回事.阻塞是A被B阻塞 ,死锁是2个会话相互等待资源 2.对应死锁,数据库会自动检测,发现死锁的还是,就会选择其中一个牺牲掉。

34,576

社区成员

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

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