Oracle 等待事件 free buffer waits 官方解释,作用,如何使用及优化方法
本站中文解释
Oracle事件free buffer waits是一个重要的数据库事件,该事件代表在轻量级进程(LWP)中发生的等待。Oracle的数据库缓存(缓冲池)中保存了数据库表中的数据,需要添加新数据时,操作系统会清理缓冲池中已有的数据,也就是“free buffer wait”,以确保空间可以用来存放新数据。
free buffer waits事件只发生在LWP上,对于LWP来说,这意味着缓冲池中缺少要求的空间。如果缓冲池太小,写入数据的量太大,free buffer waits的概率就会增加,最终导致数据库性能的恶化。
幸运的是,free buffer waits事件是可计算的,可以处理以改善数据库性能而又不降低性能,以达到最优操作。
对于free buffer waits事件,对数据库表和缓冲池的分析是非常重要的。可以从数据库表了解需要多长时间才能写入数据、缓冲池需要多大,以便能够容纳要写入的新数据。
增加缓冲池的大小也是一个重要操作,如果系统的物理内存足够,应当将缓冲池的大小放大,以便留出足够的空间用于写入新的数据。
另外,一些参数的调整也可以提高系统的执行性能,比如改变自动收缩缓冲池的参数,工作量管理(WLM)的设置,以及平衡CPU的使用和读/写的频率等。
此外,free buffer waits事件的发生,还可能是大线程写入数据而LWP没有足够的锁定时间导致的问题,要解决这个问题,可以增加数据库锁定时间,用不同的方法来更有效地写入数据。
总之,Oracle事件free buffer waits是数据库系统中常见的事件,有不同的原因导致它的发生,具体与系统环境有关,也可以单独采取措施来提高性能。
官方英文解释
This wait event can occur for several reasons.
-
All buffer gets have been suspended. This could happen when a file was read-only and is now read/write. All the existing buffers must be invalidated since they are not linked to lock elements (needed when mounted parallel (shared)). So cache buffers are not assigned to data block addresses until the invalidation is finished.
-
The session moved some dirty buffers to the dirty queue and now this dirty queue is full. The dirty queue must written first. The session will wait on this event and try again to find a free buffer
-
This also happens after inspecting free buffer inspected buffers. If no free buffer is found, Oracle waits for one second, and then tries to get the buffer again (depends on the context). For more information, see free buffer inspected.
Wait Time: 1 second
Parameter | Description |
---|---|
file# |
See “file#” |
block# |
See “block#” |
See Also:
-
Oracle Database
Performance Tuning Guide for more information about this wait event -
Oracle Database
Performance Tuning Guide about potential causes of this wait event