3
A
回答
3
创建两个存储过程。
第一应该启动一个事务,修改表1(和需要较长的时间),然后修改表2.
第二应该启动一个事务,修改表2(和需要较长的时间),然后修改表1.
理想情况下,修改应该影响同一行,或创建表锁。
然后,在客户端应用程序,启动SP1,并立即然后也开始SP2(SP1已完成之前)。
0
启动一个进程,使用带脚本的while循环连续插入或更新表,并运行所需的sp。
0
得到死锁的简单和简短的答案将是以相反的顺序访问表数据,并因此在两个连接之间引入循环死锁。让我告诉你代码:
Create table vin_deadlock (id int, Name Varchar(30))
GO
Insert into vin_deadlock values (1, 'Vinod')
Insert into vin_deadlock values (2, 'Kumar')
Insert into vin_deadlock values (3, 'Saravana')
Insert into vin_deadlock values (4, 'Srinivas')
Insert into vin_deadlock values (5, 'Sampath')
Insert into vin_deadlock values (6, 'Manoj')
GO
现在准备好了表格。只需从两个连接中以相反的顺序更新列:
-- Connection 1
Begin Tran
Update vin_deadlock
SET Name = 'Manoj'
Where id = 6
WAITFOR DELAY '00:00:10'
Update vin_deadlock
SET Name = 'Vinod'
Where id = 1
and from connection 2
-- Connection 2
Begin Tran
Update vin_deadlock
SET Name = 'Vinod'
Where id = 1
WAITFOR DELAY '00:00:10'
Update vin_deadlock
SET Name = 'Manoj'
Where id = 6
而这会导致死锁。你可以从profiler中看到死锁图。
相关问题
- 1. 更新存储过程中的死锁
- 2. 存储过程中的死锁
- 3. SQL死锁INSERT,UPDATE statments存储过程
- 4. 的TransactionScope和死锁在存储过程
- 5. 单表存储过程死锁
- 6. 使用多维数组模拟死锁
- 7. 模拟线程上的死锁
- 8. 死锁模拟::互斥
- 9. 单存储过程和多线程的死锁
- 10. 来自2个存储过程的2个查询之间的死锁
- 11. 这样的存储过程会导致死锁吗?
- 12. 将ARRAY传递给存储过程时发生死锁
- 13. 更新在SQL Server中存储过程死锁
- 14. 如何防止SQL Server存储过程中出现死锁?
- 15. SQL存储过程中的陷阱死锁错误
- 16. mysql存储过程 - 会导致死锁性能?
- 17. 存储过程生成UID的MySQL死锁
- 18. 没有索引的存储过程常见的死锁
- 19. 存储过程中避免死锁的并发语句
- 20. 创建模拟存储过程
- 21. 锁定存储过程
- 22. 通过使用锁来说明死锁的示例代码(this)
- 23. 避免死锁 - 过程
- 24. 是否可以模拟Silverlight UI线程(重现死锁场景)?
- 25. MVC 3 - 使用存储过程来填充模型
- 26. 死锁上奇怪的线程转储
- 27. mysql存储过程不释放锁
- 28. 执行时存储过程锁
- 29. 锁定整个表存储过程
- 30. 存储过程是否锁定表/行?