latch简单理解(一)

本文介绍了Latch机制的基本概念,包括其作为轻量级锁的作用原理及如何防止共享内存结构被并发访问。详细阐述了Latch请求的不同类型及其工作流程,并提供了通过v$latch视图查看Latch具体信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

latch简单理解

1.1、Latch可以理解为一种清量级的锁, Latch是一种快速的被获取和释放的内存锁,用于防止共享内存结构被多个用户同时访问。他不会造成阻塞,只会造成等待。阻塞时系统设计问题,等待是资源征用问题。最常见的latch争用而等待的----共享池中latch争用,数据缓冲池latch的争用。

1.2、对于Latch的请求,不用排队等待资源,由于Latch的分配相当随机,所以当Latch释放后,不管哪个会话请求都可能得到它,当不能获得Latch的会话,就会在后续不断的重试(spin->sleep->spin…->get latch)

在一台多CPU 的机器上,如果Latch不能立即获得,那么会话就会自旋,即在循环中反复地尝试来或得Latch。如果不这样的话,那么就会导致上下文切换(context switching),这样对资源开销更大。

1.3、Latch请求的类型:willing-to-wait和immediate。 

1.3.1 对于willing-to-wait类型的latch: 

如果一个进程在第一次尝试中没有获得latch,那么它会等待并且再尝试一次,如果经过_spin_count次争夺不能获得latch, 然后该进程转入睡眠状态,睡眠醒来后,按顺序重复以前的步骤。睡眠的时间会越来越长。 

1.3.2 对于immediate类型的latch: 

如果该闩不能立即得到的话,那么该进程就不会为获得该latch而等待。它将继续执行另一个操作。 

1.3.3 可以通过v$latch视图查看latch的具体信息,在v$latch中: 

(以下字段反映了Willing-to-wait类型请求) 

GETS:成功地以Willing-to-wait请求类型请求一个latch的次数。 

MISSES:初始以Willing-to-wait请求类型请求一个latch不成功的次数。 

SLEEPS:初始以Willing-to-wait请求类型请求一个latch不成功后,进程等待获取latch的次数。 

(以下字段反映了Immediate类型请求) 

IMMEDIATE_GETS:以Immediate请求类型成功地获得一个latch的次数。 IMMEDIATE_MISSES:以Immediate请求类型请求一个latch不成功的次数。
----总结于互联网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值