超閂鎖和子閂鎖如何工作的

2021-09-09 02:50:45 字數 610 閱讀 8001

原文:

hot it works: sql server superlatch'ing / sub-latches

閂鎖是應用在使用者模式下,在讀寫鎖結構應用在sql server 中用來保護內部結構。trace latch 是sql server 使用閂的例子,被trace controller 類建立並且使用。不管你是開著trace或者關了trace,當物理狀態被修改的時候,都會分配乙個x模式來阻止其他執行緒訪問資料。

sql server 有個程序來監視某一些latch,如果負載比較重,並且是唯讀的訪問,那麼就可以變成子閂。

每個閂結構都包含了狀態(當天的閂模式),等待佇列,其他狀態資訊。每次要從閂上獲取資訊都要使用內部鎖定(interlock)模式。那麼有些閂就變成熱點閂從而影響效能。

為了增加效能,那麼就減少全域性的資訊

使用超閂鎖和子閂鎖,這樣每個排程器分配乙個 子閂鎖。子閂鎖訪問超閂鎖來獲取資訊,那麼就不需要使用內部鎖定的方式來訪問被保護的物件。當排程器呼叫資源的時候,會通過超閂鎖來重新定向到保護的物件。這種方式在唯讀訪問能大大的提公升效能,因為減少了熱點。但是在寫訪問的時候,排程器必須對每個子閂都處理,並降級為普通的閂。

因此sql server 使用了自動公升級閂和降級閂 來增加效能

常見latch閂鎖等待

常見latch閂鎖等待 參考 oracle效能優化實務 與共享池有關的latch閂鎖等待 共享池不足或碎片化問題導致 shared pool library cache library cache pin row cache objects row cache enqueue latch 和lru ...

SQL Server裡的閂鎖介紹

閂鎖首次在sql server 7.0裡引入,同時微軟首次引入了行級別鎖 row level locking 對於行級別鎖引入閂鎖的概念是非常重要的,不然的話在記憶體中會出現丟失更新 lost updates 的現象。如我所說的,閂鎖是儲存引擎使用的輕量級同步物件,是sql server用來保護記憶...

簡單介紹SQL Server裡的閂鎖

在今天的文章裡我想談下sql server使用的更高階的,輕量級的同步物件 閂鎖 latch 閂鎖是sql server儲存引擎使用輕量級同步物件,用來保護多執行緒訪問記憶體內結構。文章的第1部分我會介紹sql server裡為什麼需要閂鎖,在第2部分我會給你介紹各個閂鎖型別,還有你如何能對它們進行...