If you are faced with log contention, what
you might observe is a large wait time on the “log file sync” event and long
write times evidenced in the “log file parallel write” event in a Statspack
report. If you see this, you may be experiencing contention on the redo logs;
they are not being written fast enough. This can happen for many reasons. One
application reason (one the DBA can’t fix, but the developer must) is that you
are committing too frequently—committing inside of a loop doing INSERTs, for example. As committing too frequently, aside from being a bad
programming practice, is a surefire way to introduce lots of log file sync
waits.
Assuming all of your transactions are
correctly sized (you are
not committing more frequently than your business rules dictate), the most
common causes for log file waits are as follows:
- Putting redo on a slow device: The disks are just performing poorly. It is time to buy faster disks.
- Putting redo on the same device as other files that are accessed frequently: Redo is designed to be written with sequential writes and to be on dedicated devices. If other components of your system—even other Oracle components—are attempting to read and write to this device at the same time as LGWR, you will experience some degree of contention. Here, you want to ensure LGWR has exclusive access to these devices if at all possible.
- Putting redo on a slow technology, such as RAID-5: RAID-5 is great for reads, but it is generally terrible for writes. As we saw earlier regarding what happens during a COMMIT, we must wait for LGWR to ensure the data is on disk. Using any technology that slows this down is not a good idea
No comments:
Post a Comment