鎖升級

鎖升級,是將眾多細粒度鎖轉換為較少的粗粒度的鎖的過程,以削減系統開銷。當事務超過它的升級極限時,Microsoft® SQL Server™ 2000 自動將行鎖和頁鎖升級為表鎖。

例如,當事務從表中請求行時,SQL Server 自動獲取受影響的行上的鎖,並在包含這些行的頁和表或者索引上放置更高級別的意向鎖。當事務控制的鎖數量超過了它的極限時,SQL Server 會試圖將表上的意向鎖更改為更強的鎖(例如,將意向排它 (IX) 鎖更改為排它 (X) 鎖)。獲取更強的鎖後,表事務持有的所有頁級鎖和行級鎖都被釋放,從而削減鎖的開銷。
SQL Server 可以為同一查詢選擇行和頁鎖定,例如,在索引上放置頁鎖(如果在非聚集的索引節點中選定了足夠的鄰接鍵來滿足查詢)及在數據上放置行鎖。以減少必須進行鎖升級的可能性。
鎖升級極限是由 SQL Server 動態確定的,無須進行配置。
SQL Server 可以動態升級或降級鎖粒度或鎖類型。例如,如果更新獲取大量行鎖而阻塞了表的大部分,將行鎖升級到表鎖。如果獲取了表鎖,將釋放行鎖。SQL Server 2000 很少需要升級鎖;查詢最佳化器編譯執行計畫時通常選擇正確的鎖粒度

相關詞條

熱門詞條

聯絡我們