Fanr

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  395 随笔 :: 0 文章 :: 184 评论 :: 48万 阅读

原文:

闩锁是应用在用户模式下,在读写锁结构应用在sql server 中用来保护内部结构。trace latch 是sql server 使用闩的例子,被trace controller 类创建并且使用。不管你是开着trace或者关了trace,当物理状态被修改的时候,都会分配一个x模式来阻止其他线程访问数据。

 
sql server 有个进程来监视某一些latch,如果负载比较重,并且是只读的访问,那么就可以变成子闩。
每个闩结构都包含了状态(当天的闩模式),等待队列,其他状态信息。每次要从闩上获取信息都要使用内部锁定(interlock)模式。那么有些闩就变成热点闩从而影响性能。
为了增加性能,那么就减少全局的信息
 
 
使用超闩锁和子闩锁,这样每个调度器分配一个 子闩锁。子闩锁访问超闩锁来获取信息,那么就不需要使用内部锁定的方式来访问被保护的对象。当调度器调用资源的时候,会通过超闩锁来重新定向到保护的对象。这种方式在只读访问能大大的提升性能,因为减少了热点。但是在写访问的时候,调度器必须对每个子闩都处理,并降级为普通的闩。
因此sql server 使用了自动升级闩和降级闩 来增加性能
 
posted on   Fanr_Zh  阅读(994)  评论(10编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示