经常有人把latch造成的
等待事件误认为是lock造成的
阻塞,其实这是两个完全不同的概念。在性能优化上,如果能够区别开这两个因素引起的性能问题,将能极大地提高我们的性能分析判断能力。
Latch是oracle为了保护内存结构而发明出的一种资源,按照它保护的资源类型不同,可以把latch分成很多种。可以把latch理解为一种轻量级的锁,它不会造成阻塞,只会导致等待。这是两个截然不同的概念。
阻塞,是一种系统设计上的问题,而等待是一种系统资源争用的问题。
还可以参考java的阻塞和等待:
http://www.outflush.com/2014/07/difference-between-block-and-wait-in-java/
导致latch争用而等待的原因非常多,内存中很多资源都可能存在争用。下面介绍两类最常见的latch争用,他们都会导致数据库的性能下降,这是一个DBA在做数据库性能分析和优化时必须知道的知识:
(1) 共享池中的latch争用
(2) 数据缓冲池中的latch争用
3.1 共享池中的latch争用
共享池中如果存在大量的sql被反复分析,就会造成很大的latch争用和长时间的等待,
最常见到的现象是没有绑定变量。最常见的几种共享池里的latch是:
Select * from v$latchname where name like ‘library cache%’
Latch# name
157 library cache
158 library cache pin
159 library cache pin allocation
160 library cache load lock
在分析系统性能时,如果看到有library cache这样的latch争用,就可以断定是共享池出了问题,这种问题基本上是由sql语句导致的,比如没有绑定变量或者一些存储过程被反复分析。
3.2 数据缓冲池latch争用
访问频率非常高的数据块被称为热块(hot block),当很多用户一起访问某几个数据块时,就会导致一些latch争用。最常见的latch争用是:
(1) buffer 不适用waits
(2) cache buffer chain
这两个latch的争用分别发生在访问数据块的不同时刻。
当一个会话需要去访问一个内存块时,它首先要去一个像链表一样的结构去搜索这个数据块是否在内存中,当会话访问这个链表时需要获得一个latch,如果获取失败,将会产生latch cache buffer chain等待,导致这个等待的原因是访问相同数据块的会话太多或者这个列表太长。
当一个会话需要访问一个数据块,而这个数据块正在被另外一个用户从磁盘读取到内存中或者这个数据块正在被另一个会话修改时,当前的会话就需要等待,就会产生一个buffer busy waits等待。
产生这些latch争用的直接原因是太多的会话去访问相同的数据块导致热块问题,
造成热块的原因可能是数据库设置导致或者是重复执行的sql频繁访问一些相同数据块导致。
热块产生的原因不尽相同,按照数据块的类型,可以分为以下几种热块类型,不同的热块类型处理的方式都是不同的:
(1) 表数据块
(2) 索引数据块
(3) 索引根数据块
(4) 文件头数据块
分享到:
相关推荐
在Oracle数据库的性能优化过程中,理解和区分Latch与Lock是非常重要的。两者虽然都涉及资源的控制和访问,但其作用机制和对性能的影响完全不同。 - **Lock(锁定)**:用于控制数据库中的数据行或表等资源的访问,...
与Lock(锁)相比,Latch的获取和释放速度更快,因为它涉及的内存操作更少。Lock通常用于更高级别的数据一致性控制,例如行级锁定,在事务处理中更为常见。而Latch Free等待事件表明系统中可能存在争用,这通常是...
第3章 latch和等待 44 3.1 共享池中的latch争用 45 .3.2 数据缓冲池latch争用 54 3.2.1 表数据块 54 3.2.2 索引数据块 59 3.2.3 索引根数据块 62 3.2.4 段头数据块 65 第4章 优化器 66 4.1 rbo基于规则的优化器 66 ...
【学习动态性能表(11)--v$latch$v$latch_children】主要关注Oracle数据库中的动态性能视图,尤其是关于latch这一关键概念的监控和分析。latch是一种轻量级的锁定机制,用于保护SGA(System Global Area)中的共享...
在Laravel框架中,"Laravel Latch"是一个用于处理会话、认证和授权的工具,它增强了Laravel原生的安全特性。...在实际开发中,结合laravel-latch-master源代码的学习,将有助于深入理解其工作原理和最佳实践。
第3章 latch和等待 44 3.1 共享池中的latch争用 45 .3.2 数据缓冲池latch争用 54 3.2.1 表数据块 54 3.2.2 索引数据块 59 3.2.3 索引根数据块 62 3.2.4 段头数据块 65 第4章 优化器 66 4.1 rbo基于规则的优化器 66 ...
Oracle数据库是一种广泛使用的大型关系型数据库管理系统,它在...在实际操作中,可以利用Oracle提供的相关视图(如V$LOCK、V$LATCH等)和SQL语句来监控和分析Latch和Lock的状态,以更好地理解和优化数据库的并发行为。
### Oracle数据库Latch与Mutex等待事件全面解析 #### 一、引言:理解Latch与Mutex 在Oracle数据库领域,了解Latch和Mutex等待事件对于优化数据库性能至关重要。这些等待事件通常指向了并发控制机制中的竞争问题,...
自Oracle 10g起,为了更精细地管理和诊断并发问题,传统的"Latch Free"事件被细分为针对SGA各部分的具体子Latch事件。例如,针对Buffer Cache的`cache buffer chains latch`和`cache buffer lru latch`,Shared Pool...
### Oracle等待事件latch解析 #### 一、什么是Latch? Latch是Oracle数据库中一种重要的低级别内存保护机制,主要用于确保对内存结构的并发访问能够有序地进行。它是一种较为简单的内存结构,其大小大约在100-200...
5. 使用Latch-Free技术:如Direct Path Read,减少对Buffer Cache Latch的依赖。 6. 数据库版本升级:新版本的Oracle数据库可能包含优化,减少了某些Latch的使用。 五、实例分析与案例研究 "Resolving_Oracle_Latch...
帐户-ui-bootstrap-3-latch 一个将 Latch 服务与 Meteor 框架集成的软件包,让用户可以轻松保护自己的帐户。 这个包扩展了ian:accounts-ui-bootstrap-3包的不同模板,以在登录下拉菜单中添加 Latch 选项。 第一次...
首先,让我们理解什么是4位LATCH。一个4位LATCH可以同时存储4个二进制位的数据,相当于一个小型的存储单元。这种LATCH由四个基本的单比特LATCH组成,每个都能独立地存储一位数据。LATCH的工作原理基于两个状态:设置...
### Oracle Library Cache Latch 竞争的解决 在Oracle数据库中,`Library Cache Latch`竞争是一个常见的性能瓶颈问题,通常会导致系统响应时间增加、性能下降等问题。本篇文章将详细探讨如何诊断并解决该问题。 ##...
《ANSI ESD SP5.4.1-2017 对CMOS B型电路Latch-up敏感性测试》是静电放电(ESD)防护领域的重要标准,它详细阐述了如何对CMOS BiCMOS集成电路进行瞬态Latch-up测试,以评估其在ESD事件下的耐受性和敏感性。...
### Oracle 常见等待事件及其对性能的影响与优化 #### 一、Oracle等待事件概述 在Oracle数据库中,等待事件是指数据库实例在执行某个操作过程中由于资源竞争或限制而处于等待状态的情况。这些等待事件可能导致...
在Oracle数据库管理中,"所有参数,latch,等待时间"是三个关键概念,它们对于理解和优化数据库性能至关重要。下面将分别对这三个方面进行详细解释。 首先,"所有参数"通常指的是Oracle数据库的初始化参数...
Oracle提供了多种工具和视图,如V$LATCH、V$LATCH_CHILDREN等,用于跟踪和诊断Latch的竞争情况。通过对这些工具的分析,DBA可以了解哪些Latch是竞争热点,并据此采取措施优化系统性能。 ### 七、获取Latch信息的...