Oracle 等待事件 latch activity 官方解释,作用,如何使用及优化方法
本站中文解释
Oracle的 latch (拉环) 是一种用于持有@ Oracle 资源保护和共享的锁定机制,它在Oracle数据库操作中扮演着重要的角色。latch activity 就是指当使用者试图访问某个共享资源时,Oracle尝试以及获取latch来保护它;而使用者在试图访问资源失败或者等待过久时产生的一个会话活动状态。
Latch 顾名思义,它是一种物理的机械装置,也是一个安全的电子机械装置,能够提供专一的存储资源保护,并确保资源的正确使用。在 Oracle 中,latch 是一种 Locking 技术,它利用小的电子门或者存储器控制访问内存的能力,从而对存储资源(内存)进行保护。就其概念而言,latch 可以用来保护存储器单元,防止其他会话修改它。Oracle 中有多种类型的 latch 供用户使用,其中大部分是逻辑 latch,也有一些物理 latch 处理存储机构上的竞争关系(通常是由共享和独占模式)。
比如一些重要的采用latch技术的 Oracle 系统资源:Control File 采用Latch 来保护包含Control File 路径和元数据等内容的内存结构;Redo Log Buffer 采用Latch 来维护这个缓存器;enqueue locks 采用Latch 来防止多个会话访问相关的资源;Cache Buffers Chains 防止会话访问同样的缓冲块;DFS Locks 维持对Dictionary Object的访问和跟一起的Latches;System State Object (如 Library Cache Latch) 对 Oracle 内部资源的保护,确保其正确的使用。
Latch activity 就是指上述场景中,应用程序试图访问被latch保护的信息资源时,出现的latch 锁死(悬挂)现象。在Oracle 中,一个latch 被锁定就意味着要等待,将会拖延其他会话访问这项资源所需时间,而且还会产生等待事件:Latch free(对应的用户应用程序拉环尝试访问被锁住的共享资源,但是结果失败),Latch sleep(应用程序正在尝试在等待解锁),Latch spin(应用程序尝试多次解锁,如果失败,将休眠一段时间等待唤醒)。因此,应用程序有时会遇到一些因Latch未释放而无法获得应有的资源而产生的性能问题。
因此,应用程序设计者需要尽量避免出现 Latch Activity。尽管Latch Activity可能是一种重要的调试工具,但通过正确的设计,使用者可以尽量避免Latch Activity,保持系统的性能。拉环有很多种,每种拉环都被保护着的资源类型不同。此外,latch也是一种动态的资源,在某些情况下可能会对系统的访问能力产生重大影响,因此在使用过程中,应该尽可能的避免带来的开销。
官方英文解释
This event is used as part of the process of determining whether a latch must be cleaned.
Wait Time: 0.05 to 0.1 seconds
Parameter | Description |
---|---|
address |
The address of the latch that is being checked |
number |
The latch number of the latch that has activity. To find more information on the latch, use the following SQL statement:
|
process# |
If this is 0, it is the first phase of the in-flux tests |
See Also:
Oracle Database
Performance Tuning Guide for more information about latch wait events