free buffer waits
官网解释:
This wait event indicates that a server process was unable to find a free buffer and has posted the database writer to make free buffers by writing out dirty buffers. A dirty buffer is a buffer whose contents have been modified. Dirty buffers are freed for reuse when DBWR has written the blocks to disk.
解释:
此等待事件表示服务器进程无法找到可用的buffer,并通过写出脏buffer来创建空闲缓冲区。
脏buffer指的的那些内容被修改的块儿,当DBWR将块写入磁盘时,可以释放脏的缓冲区以供重用。
Causes:
DBWR may not be keeping up with writing dirty buffers in the following situations:
The I/O system is slow.
There are resources it is waiting for, such as latches.
The buffer cache is so small that DBWR spends most of its time cleaning out buffers for server processes.
The buffer cache is so big that one DBWR process is not enough to free enough buffers in the cache to satisfy requests.
Actions:
If this event occurs frequently, then examine the session waits for DBWR to see whether there is anything delaying DBWR.
如果此事件频繁发生,则检查会话是否等待DBWR查看是否有任何延迟DBWR。
解释:
当一个会话将数据块从磁盘读到内存中时,它需要找到空闲的内存空间来存放这些数据块,
当内存中没有空闲的空间时,就会产生这个等待;
会话在做一致性读时,需要构造数据块在某个时刻的前映像( p_w_picpath),
此时需要申请内存来存放这些新构造的数据块,但内存中无法找到这样的可用内存块。
当数据库中出现比较严重的 free buffer waits 等待事件时,可能的原因是:
(1)database buffer cache 太小,
(2)导致空闲空间不够,比如内存中的脏数据太多, DBWR 无法及时将这些脏数据写到磁盘中以释放空间