gpt4 book ai didi

sql - 如果以相同的顺序访问对象,如何会发生死锁?

转载 作者:行者123 更新时间:2023-12-02 23:38:25 25 4
gpt4 key购买 nike

关于the MS Technet page on "Minimizing Deadlocks" ,它说“死锁无法完全避免”。更具体地说,它指出

If all concurrent transactions access objects in the same order, deadlocks are less likely to occur.

这意味着理论上可能会发生死锁,即使所有事务都以相同的顺序访问对象。有人可以举个例子来说明这是如何实现的吗?

最佳答案

只是为了进一步回答 Charles 的答案提供一个简单的代码示例

CREATE TABLE T(X INT)

然后在两个并发连接中运行

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRAN

SELECT * FROM T

WAITFOR DELAY '00:00:10'

INSERT INTO T VALUES(1)

COMMIT

死锁。

问题在于,两个连接都可以获取资源上的共享锁,但在需要将其转换为独占锁时会互相阻塞。

关于sql - 如果以相同的顺序访问对象,如何会发生死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18697180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com