一千萬個為什麽

搜索

什麽是數據庫中的死鎖?

sql server中的死鎖是什麽時候出現的?死鎖有什麽問題以及如何解決?

最佳答案

通常,死鎖意味著兩個或更多實體阻塞某些源,並且它們都不能完成,因為它們以循環方式阻塞源。

一個例子:假設我有表A和表B,我需要在A中進行一些更新,然後B和我決定在使用時鎖定它們(這是非常愚蠢的行為,但它現在用於它的目的) 。在同一時刻,其他人以相反的順序做同樣的事情 - 首先鎖定B,然後鎖定A.

按時間順序,會發生這種情況:

proc1:鎖定A. proc2:鎖定B.

proc1:鎖定B - 開始等待,直到proc2釋放B proc2:鎖定A - 開始等待,直到proc1釋放A.

很明顯他們都不會完成。那是僵局。

洞更深入,但這只是入口,如果您需要了解更多,請投入時間。在我們的大學裏有關於這一點的全部講座 - 所以不要認為閱讀一些文章會讓你成為專家;-)

轉載註明原文: 什麽是數據庫中的死鎖?