鎖相容性控制多個事務能否同時獲取同一資源上的鎖。 如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。 如果請求鎖的模式與現有鎖的模式不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。 例如,沒有與排他鎖相容的鎖模式。 如果具有排他鎖(x 鎖),則在釋放排他鎖(x 鎖)之前,其他事務均無法獲取該資源的任何型別(共享、更新或排他)的鎖。 另一種情況是,如果共享鎖(s 鎖)已應用到資源,則即使第乙個事務尚未完成,其他事務也可以獲取該項的共享鎖或更新鎖(u 鎖)。 但是,在釋放共享鎖之前,其他事務無法獲取排他鎖。
下表顯示了最常見的鎖模式的相容性。
現有授予模式
請求模式
is
s
u
ix
six
x
意向共享 (is)是是
是是是否
共享 (s)是是
是否否否
更新 (u)是是
否否否否
意向排他 (ix)是否
否是否否
意向排他共享 (six)是否
否否否否
排他 (x)否否
否否否否
注意:意向排他鎖(ix 鎖)與 ix 鎖模式相容,因為 ix 表示打算只更新部分行而不是所有行。 還允許其他事務嘗試讀取或更新部分行,只要這些行不是其他事務當前更新的行即可。
使用下表可以確定 microsoft sql server 中所有可用的鎖模式的相容性。
鎖相容性(資料庫引擎)
鎖相容性 資料庫引擎 鎖相容性控制多個事務能否同時獲取同一資源上的鎖。如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。如果請求鎖的模式與現有鎖的模式不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。例如,沒有與排他鎖相容的鎖模式。如果具有排他鎖 x...
資料庫鎖的相容性矩陣
把自己的知乎答案搬來了 從多粒度樹的角度著手理解。在多粒度封鎖中,若對乙個節點加鎖 x s 意味著這個點的後裔節點也被加以同樣的鎖。若對乙個節點加意向鎖,則說明正在對其子節點加 對應的 鎖 可理解為乙個事務中的先後次序 任意節點加 x,s 鎖時,必須對其所有上級節點加意向鎖。多粒度封鎖的加鎖順序是自...
事務鎖相容性
sql server 2008 r2 其他版本 鎖相容性控制多個事務能 否同時獲取同一資源上的鎖。如果資源已被另一事務鎖定,則僅當請求鎖的模式與現有鎖的模式相相容時,才會授予新的鎖請求。如果請求鎖的模式與現有鎖的模式 不相容,則請求新鎖的事務將等待釋放現有鎖或等待鎖超時間隔過期。例如,沒有與排他鎖相...