Free Buffer Waits
Free buffer waits occur when a session needs to read a data block from a database file on disk into the buffer cache. If there are no unmodified (or clean) blocks in the buffer cache, then the session has to wait for the database writer process to write modified (or dirty) blocks to disk in order for free buffers to be made available.
Normally, the database writer is constantly writing dirty buffers to disk, so this event rarely occurs. When it does occur, it is usually due to one of the following reasons:
- Untuned disk layout. If datafiles are not spread evenly across disk devices, then a single disk may form a bottleneck to both read and write performance. In this circumstance, the database writer may not be able to clear dirty blocks from this device as rapidly as they are created.
- Untuned database writers. To write efficiently to multiple disk devices, it is essential that you either configure multiple database writers or implement asynchronous or list I/O. This helps the database writer to keep up with changes to the buffer cache.
- Untuned sorts. In most circumstances, sort direct writes are enabled by default, preventing a flooded buffer cache from causing other sessions to encounter free buffer waits.