When a user session commits (or rolls back), the session's redo
information must be flushed to the redo logfile by LGWR. The server
process performing the COMMIT or ROLLBACK waits under this event for the
write to the redo log to complete. If this event's waits constitute a
significant wait on the system or a significant amount of time waited by a
user experiencing response time issues or on a system, then examine the
average time waited. If the average time waited is low, but the number of
waits are high, then the application might be committing after every
INSERT, rather than batching COMMITs. Applications can reduce the wait by
committing after 50 rows, rather than every row. If the average time
waited is high, then examine the session waits for the log writer and see
what it is spending most of its time doing and waiting for. If the waits
are because of slow I/O, then try the following:
- Reduce other I/O activity on the disks containing the redo
logs, or use dedicated disks
- Alternate redo logs on different disks to minimize the effect
of the archiver on the log writer
- Move the redo logs to faster disks or a faster I/O subsystem
- Consider using raw devices to speed up the writes
- Depending on the type of application, it might be possible to
batch COMMITs by committing every N rows, rather than every row, so that
fewer log file syncs are needed
No comments:
Post a Comment