【问题标题】: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 的连接超时/连接中断? ——

【问题讨论】:

    标签: sql deadlock connection-timeout


    【解决方案1】:

    这些都不会发生。当一个连接被选为死锁牺牲品时,所发生的只是事务将自动回滚,除此之外别无其他。连接仍将处于活动状态(如果需要,可以立即再次使用),但之前有关已终止事务的任何指令都将丢失,必须重做。

    超时是一种完全不同的事件,它始终由客户端控制,并在客户端“放弃”等待响应时发生。但是死锁是在服务器端生成的,会导致连接出错,否则连接仍然存在,就像许多其他错误一样。

    【讨论】:

    • 酷,假设客户端的超时值设置为20秒,发生死锁> 20秒,那么连接会超时吗?对吗?
    • 在这种情况下,连接将超时并取消查询。死锁将不会发生,因为客户端将在服务器决定终止执行之前中止执行。在某种程度上,如果出现这种情况,超时和死锁会“竞争”首先杀死连接的东西。之后产生的效果类似。
    • 谢谢你,回答了我的问题!
    猜你喜欢
    • 2015-12-16
    • 2019-02-23
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多