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


原文:

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

 
sql server 有個進程來監視某一些latch,如果負載比較重,並且是只讀的訪問,那么就可以變成子閂。
每個閂結構都包含了狀態(當天的閂模式),等待隊列,其他狀態信息。每次要從閂上獲取信息都要使用內部鎖定(interlock)模式。那么有些閂就變成熱點閂從而影響性能。
為了增加性能,那么就減少全局的信息
 
 
使用超閂鎖和子閂鎖,這樣每個調度器分配一個 子閂鎖。子閂鎖訪問超閂鎖來獲取信息,那么就不需要使用內部鎖定的方式來訪問被保護的對象。當調度器調用資源的時候,會通過超閂鎖來重新定向到保護的對象。這種方式在只讀訪問能大大的提升性能,因為減少了熱點。但是在寫訪問的時候,調度器必須對每個子閂都處理,並降級為普通的閂。
因此sql server 使用了自動升級閂和降級閂 來增加性能
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM