Tim*_*mwi 5 sql sql-server transactions database-deadlocks
在关于"最小化死锁"的MS Technet页面上,它说"无法完全避免死锁".更具体地说,它表明了这一点
如果所有并发事务以相同顺序访问对象,则不太可能发生死锁.
这意味着即使所有事务以相同的顺序访问对象,理论上也可能发生死锁.有人可以举例说明如何做到这一点吗?
只是为了进一步为 Charles 的回答提供一个简单的代码示例
CREATE TABLE T(X INT)
Run Code Online (Sandbox Code Playgroud)
然后在两个并发连接中运行
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
SELECT * FROM T
WAITFOR DELAY '00:00:10'
INSERT INTO T VALUES(1)
COMMIT
Run Code Online (Sandbox Code Playgroud)
僵局。
问题在于,两个连接都可以获取资源上的共享锁,但当它们需要将其转换为排它锁时,会互相阻塞。
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |