Sql-Server

什麼是鎖升級?

  • June 12, 2017

我在一次採訪中被問到這個問題,沒有答案。有人可以在這裡解釋嗎?

數據庫鎖可以存在於行、頁或整個表或索引上。當事務正在進行時,事務持有的鎖會佔用資源。鎖升級是系統將多個鎖合併為更高級別的鎖(例如將多個行鎖合併到一個頁面或將多個頁面合併到整個表),通常是為了恢復大量細粒度鎖佔用的資源。

它會自動執行此操作,儘管您可以在表上設置標誌(參見線上書籍中的 ALTER TABLE)來控制該特定表上的鎖升級策略。特別是在舊版本的 Sybase 和 SQL Server 上,當您有兩個程序同時將單獨的行寫入同一頁面時,過早或過度急切的鎖升級曾經是一個問題。如果您回溯得足夠遠(IIRC SQL Server 6.5),SQL Server 實際上並沒有行鎖定,但只能鎖定表或頁面。如果發生這種情況,您可能會在同一頁面中插入記錄之間發生爭用;通常您會在表上放置一個聚集索引,以便新插入到不同的頁面。

引用自:https://dba.stackexchange.com/questions/12864