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. 存儲過程是否鎖定表/行?