鎖定相容性 (Database Engine)

鎖定相容性可控制多筆交易是否可同時對相同的資源取得鎖定。若資源已被其他交易鎖定,則只有在要求的鎖定模式與現有鎖定模式相容時,才能授與新的鎖定要求。若所要求鎖定的模式與現有鎖定不相容,則要求新鎖定的交易會等候現有鎖定被釋放,或等候鎖定逾時間隔過期。例如,沒有任何一種鎖定模式與獨佔鎖定相容。有獨佔 (X) 鎖定存在時,其他的交易都無法取得該資源的任何一種鎖定 (共用、更新或獨佔),直到獨佔 (X) 鎖定被釋放為止。此外,如果資源已套用共用 (S) 鎖定,則即使第一筆交易尚未完成,其他的交易仍可取得該項目的共用鎖定或更新 (U) 鎖定。然而在共用鎖定尚未釋放之前,其他的交易仍然無法取得獨佔鎖定。

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

 

現有已授與的模式

 

 

 

 

 

要求的模式

IS

S

U

IX

SIX

X

意圖共用 (IS)

共用 (S)

更新 (U)

意圖獨佔 (IX)

與意圖獨佔共用 (SIX)

獨佔 (X)

[!附註]

意圖獨佔 (IX) 鎖定與 IX 鎖定模式相容,因為 IX 表示意圖是僅更新某些資料列而非更新全部。嘗試讀取或更新某些資料列的其他交易也可獲得許可,只要這些資料列與其他交易所更新的資料列不相同即可。此外,如果兩筆交易嘗試更新相同的資料列,這兩筆交易都會被授與資料表和頁面層級的 IX 鎖定。不過,其中一筆交易會被授與資料列層級的 X 鎖定。另一筆交易則必須等到系統移除資料列層級鎖定為止。

完整的鎖定相容性矩陣

您可以使用下表來判斷 Microsoft SQL Server 中所有可用鎖定模式的相容性。

顯示鎖定相容性矩陣的圖表