网站首页 > 技术文章 正文
概述
前面介绍的是enquence方面的内容,也就是lock,今天主要介绍一下latch方面。
Latch的定义和作用
Oracle数据库使用闩锁(latch)来管理SGA内存的分配和释放,Latch是用于保护SGA中共享数据结构的一种串行化锁定机制。Latch的实现是与操作系统相关的,尤其和一个进程是否需要等待一个latch、需要等待多长时间有关。
Latch是一种能够极快地被获取和释放的锁,它通常用于保护描述buffer cache中block的数据结构。
比如数据缓存中的某个块要被读取,我们会获得这个块的latch,这个过程叫做pin;另外一个进程恰好要修改这个块,他也要pin这个块,此时他必须等待。当前一个进程释放latch后才能pin住,然后修改。如果多个进程同时请求的话,他们之间将出现竞争,没有一个入队机制,一旦前面进程释放latch,后面的进程就蜂拥而上,没有先来后到的概念,这个和Lock是有本质区别的。这一切都发生的非常快,因为Latch的特点是快而短暂,当然这个只是大致过程。
Latch的目的
1、保证资源的串行访问:
– 保护SGA的资源访问
– 保护内存的分配
2、保证执行的串行化:
– 保护关键资源的串行执行
– 防止内存结构损坏
Latch VS enqueue
Latch在哪里?---SGA
latch主要是资源的请求和分配,
1、共享池
– sql 解析,sql重用....
2、数据缓冲池
– 数据访问,数据写入磁盘,数据读入内存...
– 修改数据块
– 数据段扩展
Oracle有哪些Latch
select name from v$latchname;
Latch的机制
比如数据缓存中的某个块要被读取,我们会获得这个块的 latch,这个过程叫做spin,另外一个进程恰好要修改这个块,他也要spin这个块,此时他必须等待,当前一个进程释放latch后才能spin 住,然后修改,如果多个进程同时请求的话,他们之间将出现竞争,没有一个入队机制, 一旦前面进程释放所定,后面的进程就蜂拥而上,没有先来后到的概念,并且这一切都发生的非常快。
Latch的的获取
1、wait方式--如果无法获取请求的latch,则:
– spin
? 当一个会话无法获得需要的latch时,会继续使用CPU(CPU 空转),达到一个间隔后,
再次尝试申请latch,直到达到最大的重试次数。
– sleep
? 当一个会话无法获得需要的latch时,会等待一段时间(sleep),达到一个间隔后,再次
尝试申请latch,如此反复,直到达到最大的重试次数。
2、No wait方式--如果无法获取请求的latch,则:
– 不会发生sleep或者spin.
– 转而去获取其它可用的Latch
篇幅有限,latch方面的内容就介绍到这了,感兴趣的朋友也可以深入研究下。后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!
猜你喜欢
- 2024-10-08 干货总结:彻底搞懂MySQL数据库锁机制(上篇)
- 2024-10-08 慢雾安全团队:代币如果加了锁机制可能会威胁用户资金权限
- 2024-10-08 一文理解MySQL的锁机制与死锁排查
- 2024-10-08 深究用户模式锁的使用场景(异变结构、互锁、旋转锁)
- 2024-10-08 mysql 锁机制介绍 mysql锁原理详细
- 2024-10-08 苹果新增“休眠软件锁”机制,严防更换原装电池
- 2024-10-08 Mysql锁机制 mysql三种锁定机制
- 2024-10-08 Oracle数据库锁机制 oracle数据库 解锁
- 2024-10-08 一文由浅入深带你完全掌握MySQL的锁机制原理与应用
- 2024-10-08 让人闻风丧胆的 Mysql 锁机制 mysql锁机制应用场景
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)