SQLServer 中的逝世鎖解釋。本站提示廣大學習愛好者:(SQLServer 中的逝世鎖解釋)文章只能為提供參考,不一定能成為您想要的結果。以下是SQLServer 中的逝世鎖解釋正文
1. 創立一個Database,名為InvDB。
2. 履行上面劇本創立person表並填充兩條數據:
3. 在SQL Server Management Studio的兩個窗口中同時履行上面的查詢:
這段代碼在默許的READ COMMITTED隔離級別下運轉,兩個過程分離在獲得一個排它鎖的情形下,請求對方的同享鎖從而形成逝世鎖。
可見一個過程可以正常更新並顯示成果,而另外一個過程曾經被回滾:
(1 row(s) affected)
Msg 1205, Level 13, State 45, Line 8
Transaction (Process ID 55) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
4. 啟動 SQL Server Profiler,選擇上面4種Events:
再履行一次下面的逝世鎖試驗,可以看到以下所示的逝世鎖圖:
異常風趣的一點是:第二次履行上述語句不會產生逝世鎖!這是由於此時兩個過程中,SQL Server會智能的辨認出update語句是不須要做的,所以都不會去獲得排它鎖,固然也就不會逝世鎖了。SQL Server 2008 的查詢優化器還真長短常壯大!