死锁是不是会导致任何活动连接超时/中断?
Posted
技术标签:
【中文标题】死锁是不是会导致任何活动连接超时/中断?【英文标题】:Does deadlock cause any active connection to be timed out/break?死锁是否会导致任何活动连接超时/中断? 【发布时间】:2018-05-30 13:24:48 【问题描述】:我有一个基本的 SQL 问题,如果有两个活动连接,“A”和“B”到 SQL 服务器,假设两者之间发生了死锁,所以为了避免死锁,SQL 服务器将回滚其中一个连接“A”或“B”的交易。假设 SQL 服务器回滚连接“A”的事务,这种事务回滚是否也会导致连接 A 的连接超时/连接中断? ——
【问题讨论】:
【参考方案1】:这些都不会发生。当一个连接被选为死锁牺牲品时,所发生的只是事务将自动回滚,除此之外别无其他。连接仍将处于活动状态(如果需要,可以立即再次使用),但之前有关已终止事务的任何指令都将丢失,必须重做。
超时是一种完全不同的事件,它始终由客户端控制,并在客户端“放弃”等待响应时发生。但是死锁是在服务器端生成的,会导致连接出错,否则连接仍然存在,就像许多其他错误一样。
【讨论】:
酷,假设客户端的超时值设置为20秒,发生死锁> 20秒,那么连接会超时吗?对吗? 在这种情况下,连接将超时并取消查询。死锁将不会发生,因为客户端将在服务器决定终止执行之前中止执行。在某种程度上,如果出现这种情况,超时和死锁会“竞争”首先杀死连接的东西。之后产生的效果类似。 谢谢你,回答了我的问题!以上是关于死锁是不是会导致任何活动连接超时/中断?的主要内容,如果未能解决你的问题,请参考以下文章
移至 Glassfish-2.x 集群会导致连接在 1 小时后超时