我試着讀一篇關於鎖和死鎖的文章,它只是不着陸,不同類型的鎖。 我們正在運行2個不同的進程,它們試圖編輯同一個表中的記錄。 第一個進程讀取新數據並將其發送給外部方並相應地更新狀態,另一個進程接收來自外部方的接收結果並相應地更新狀態。有沒有一種方法來防止死鎖(以及發生了什麼是一個發生,一個受害)
現在我們越來越多的死鎖(在這種情況下,其中一個是victom並被中止)。到目前爲止這麼好,因爲你可以預見到這一點,並嘗試重新運行該聲明,但總是發生同樣的死鎖。這就是我的第一個問題:爲什麼同樣的死鎖總是再次發生?
第二,有沒有辦法告訴dbms,當另一個進程正在讀取和更新記錄時,不要嘗試獲取記錄的獨佔鎖(我們通過存儲過程更新單個記錄),而是'等待一邊'直到另一個進程準備好了?或者說是一個太簡單的事情來說死鎖?
並且可能是第三個,有沒有辦法向LINQ to SQL詢問哪些鎖導致了問題,所以我對該進程的哪些部分導致問題有所瞭解。