Posted on 2009-03-23 20:32
Prayer 閱讀(155)
評論(0) 編輯 收藏 引用 所屬分類:
DB2
將眾多細(xì)
粒度鎖轉(zhuǎn)換為較少的粗粒度的鎖以削減系統(tǒng)開銷的進(jìn)程。
鎖升級是將眾多細(xì)粒度鎖轉(zhuǎn)換為較少的粗粒度的鎖的過程,以削減系統(tǒng)開銷。當(dāng)事務(wù)超過它的升級極限時,Microsoft® SQL Server™ 2000 自動將行鎖和頁鎖升級為表鎖。
例如,當(dāng)事務(wù)從表中請求行時,SQL Server 自動獲取受影響的行上的鎖,并在包含這些行的頁和表或者索引上放置更高級別的意向鎖。當(dāng)事務(wù)控制的鎖數(shù)量超過了它的極限時,SQL Server 會試圖將表上的意向鎖更改為更強(qiáng)的鎖(例如,將意向排它 (IX) 鎖更改為排它 (X) 鎖)。獲取更強(qiáng)的鎖后,表事務(wù)持有的所有頁級鎖和行級鎖都被釋放,從而削減鎖的開銷。
SQL Server 可以為同一查詢選擇行和頁鎖定,例如,在索引上放置頁鎖(如果在非聚集的索引節(jié)點中選定了足夠的鄰接鍵來滿足查詢)及在數(shù)據(jù)上放置行鎖。以減少必須進(jìn)行鎖升級的可能性。
鎖升級極限是由 SQL Server 動態(tài)確定的,無須進(jìn)行配置。
SQL Server 可以動態(tài)升級或降級鎖粒度或鎖類型。例如,如果更新獲取大量行鎖而阻塞了表的大部分,將行鎖升級到表鎖。如果獲取了表鎖,將釋放行鎖。SQL Server 2000 很少需要升級鎖;查詢優(yōu)化器在編譯執(zhí)行計劃時通常選擇正確的鎖粒度。