資料庫鎖的相容性矩陣

2022-09-05 12:27:14 字數 708 閱讀 4246

把自己的知乎答案搬來了

從多粒度樹的角度著手理解。

在多粒度封鎖中,若對乙個節點加鎖(x、s),意味著這個點的後裔節點也被加以同樣的鎖。若對乙個節點加意向鎖,則說明正在對其子節點加(對應的)鎖(可理解為乙個事務中的先後次序)。任意節點加(x,s)鎖時,必須對其所有上級節點加意向鎖。多粒度封鎖的加鎖順序是自頂向下,釋放鎖的順序是自下而上。

上級節點加的意向鎖不影響當前節點和其子節點上鎖的相容性。

設有事務ab,都對同一資料物件r加鎖。

x鎖排他,故只要a對r加x鎖,b不能再對r及其子節點加鎖。

s鎖,若a對r加s鎖,則r及其子節點均加s鎖,故r及其子節點不能加x鎖。也就是說b不能對r加x,ix,six這些包含x的鎖。

ix鎖,若a對r加ix鎖,則r到該節點路徑上的節點全加ix鎖,該節點及其子節點全加x鎖。為了保證加了x鎖的那個子節點上面不加其他的鎖,故b一定不能對r加x,s,six鎖。而至於is,ix鎖,b是可以對r加的,因為要加x,s鎖的那個節點可能不同。若要加鎖的節點相同則再用x,s鎖的相容矩陣解釋衝突。

six鎖,若a對r加six鎖,對則r先加了s鎖,釋放後再加ix鎖(一次操作中的先後次序),r的子節點分別對應加鎖。故b不能對r加並上。

is鎖,若a對r加is鎖,那麼r到要加s鎖的節點路徑上的節點全加is鎖,該節點及其子節點全加s鎖。故b不能對其加x鎖。至於ix,six鎖是可以加的,因為對應要加鎖的子節點可能不同,相同時再按x,s鎖的相容矩陣判別即可。

鎖相容性(資料庫引擎)

鎖相容性 資料庫引擎 鎖相容性控制多個事務能否同時獲取同一資源上的鎖。如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。如果請求鎖的模式與現有鎖的模式不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。例如,沒有與排他鎖相容的鎖模式。如果具有排他鎖 x...

鎖相容性(資料庫引擎)

鎖相容性控制多個事務能否同時獲取同一資源上的鎖。如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。如果請求鎖的模式與現有鎖的模式不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。例如,沒有與排他鎖相容的鎖模式。如果具有排他鎖 x 鎖 則在釋放排他鎖 ...

事務鎖相容性

sql server 2008 r2 其他版本 鎖相容性控制多個事務能 否同時獲取同一資源上的鎖。如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。如果請求鎖的模式與現有鎖的模式 不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。例如,沒有與排他鎖相...