Oracle 等待事件 enqueue 官方解释,作用,如何使用及优化方法
本站中文解释
Oracle 事件 Enqueue 是 Oracle 数据库在共享资源上的一种形式,这些共享资源可以是粘性池中的锁(又可以称作“资源超时队列”),或者是存储于缓冲区中的页面。Enqueue 是在不同的会话之间进行访问统一资源时共享资源的内部组件,允许会话在共享资源上占有和使用。除了本地会话之外,多个会话可以共享这些资源,这需要 Enqueue 来维护活动会话的顺序。
Enqueue 启用会话以排他性方式访问共享资源,这就允许一般共享但仅在特定会话内有效的数据可以在任何时候,而不会被其他会话所访问。Enqueue 还允许会话等待另一个会话完成对资源的访问,而无需阻塞操作发出的系统。因此,当一个会话想要更新资源时,其他的会话都需要等待,直到第一个操作完成占用,然后才能访问。如果一个会话想要访问共享资源,但发现 Enqueue 正在别的会话的控制之下而无法访问,它可以将自己放入等待队列中,等待它可以访问的资源时再进行访问。
Enqueue 的另外一种主要功能是它可以实现接近任务并行性地完成任务。其原理是,当系统上有许多会话正在使用资源时,其它会话都需要使用这些资源,但是它们不能无限期的等待而不去做任何事,而是尝试去获取,如果发现它们无法获取,它们就会将自己放入 Enqueue 的等待队列中,等待当前会话完成后,它就可以尝试获取。因此,虽然每个会话都可能无法完全独立完成任务,但是它们可以互相等待,最终都可以尽快完成任务(尽管时间会拉长)。
Enqueue 对于管理和维护共享资源,以及保护数据一致性和事务完整性非常重要。因此,当多个会话同时访问共享资源时,Enqueue 将成为保护该资源的非常有效的工具。
官方英文解释
The session is waiting for a local enqueue.
The wait depends on the name of the enqueue (see Oracle Enqueue Names).
Wait Time: Depends on the enqueue name
Parameter | Description |
---|---|
name |
See “name and type” |
mode |
See “mode” |
See Also:
Oracle Database
Performance Tuning Guide for more information about the potential causes of an enqueue wait event