鎖相容性(資料庫引擎)

2021-04-13 06:07:16 字數 992 閱讀 8941

鎖相容性(資料庫引擎)

鎖相容性控制多個事務能否同時獲取同一資源上的鎖。如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。如果請求鎖的模式與現有鎖的模式不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。例如,沒有與排他鎖相容的鎖模式。如果具有排他鎖(x 鎖),則在釋放排他鎖(x 鎖)之前,其他事務均無法獲取該資源的任何型別(共享、更新或排他)的鎖。另一種情況是,如果共享鎖(s 鎖)已應用到資源,則即使第乙個事務尚未完成,其他事務也可以獲取該項的共享鎖或更新鎖(u 鎖)。但是,在釋放共享鎖之前,其他事務無法獲取排他鎖。

下表顯示了最常見的鎖模式的相容性。

現有授予模式

請求模式

is

s

u

ix

six

x

意向共享 (is)

是是是是

共享 (s)

是是否否

更新 (u)

是否否否

意向排他 (ix)

否否是否

意向排他共享 (six)

否否否否

排他 (x)

否否否否

否注意:

意向排他鎖(ix 鎖)與 ix 鎖模式相容,因為 ix 表示打算只更新部分行而不是所有行。還允許其他事務嘗試讀取或更新部分行,只要這些行不是其他事務當前更新的行即可。

完整的鎖相容性矩陣

使用下表可以確定 microsoft sql server 2005 中所有可用的鎖模式的相容性。

鎖相容性(資料庫引擎)

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

資料庫鎖的相容性矩陣

把自己的知乎答案搬來了 從多粒度樹的角度著手理解。在多粒度封鎖中,若對乙個節點加鎖 x s 意味著這個點的後裔節點也被加以同樣的鎖。若對乙個節點加意向鎖,則說明正在對其子節點加 對應的 鎖 可理解為乙個事務中的先後次序 任意節點加 x,s 鎖時,必須對其所有上級節點加意向鎖。多粒度封鎖的加鎖順序是自...

事務鎖相容性

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