1. 程式人生 > >數據庫的死鎖相關知識

數據庫的死鎖相關知識

申請 業務 strong 自己 發的 一個表 tro 空間 死鎖

死鎖的定義

死鎖是指兩個或兩個以上的進程在執行的過程中,由於競態資源或由於彼此通信而造成的一種阻塞現象。若無外力作用,它們都將無法推進下去,此時稱系統處於死鎖狀態,這些在互相等待的進程稱為死鎖進程。

數據庫發生死鎖的條件

1.資源不能共享。需要只能由一個進程或線程使用。

2.請求且保持。已經鎖定的資源自己保持著不釋放。

3.不剝奪。 自己申請的資源不能被別人剝奪。

4.循環等待。

想防止死鎖只需將上述條件破壞:

(1)盡量避免並發的執行涉及到修改數據的語句。

(2)要求每個事務一次就將所有要用的加鎖,否則不予執行。

(3)每個事務執行的時間不能太長,在業務允許的情況下,可以考慮將事務分割成幾個較小的事務來執行。

(4)數據存儲空間離散法。采用各種手段將邏輯上在一個表中的數據分散到若幹個離散的空間上,以便改善對表的訪問。

(5)將經常更新的數據庫與查詢數據庫分割開來。

數據庫的死鎖相關知識