`

配置并使用Redo Log Buffer

 
阅读更多
当buffer cache中的数据块被修改后,服务器进程生成redo数据并写入到redo log buffer中。当满足以下条件时,LGWR会将redo log buffer中的条目开始写入在线重做日志:
--redo log buffer满1/3.
--每3秒超时(Timeout).
--log_buffer中的数据到达1M.
--事务提交时.

当LGWR将redo log buffer中的重做条目写入到在线重做日志文件或磁盘后,用户进程就可以复制新的条目到redo log buffer,以覆盖内存中被写入到磁盘的条目。LGWR写入速度通常很快,足以确保缓冲区的空间总可以写入新条目,即使在对重做日志的访问很频繁时也是如此。

如果我们的系统拥有快速处理器和I/O相对较慢的磁盘,处理器可能会填满缓存区的其余空间,这时会促使LGWR移动缓冲区的部分数据到磁盘。在这种情况下,较大的日志缓冲区能够临时掩盖较慢磁盘对系统带来的影响。你这可做下面的选择:
--提升checkpoint或归档进程
--提升LGWR性能(也许你可以将所有的在线重做日志放置到速度更快的裸设备)

合理使用redo log buffer:
--执行批量操作时使用批量提交,以至LGWR能够更高效的写入重做条目到在线重做日志文件中。
--当加载大量数据时,使用nologging操作。



设置Log Buffer
redo log buffer由初始化参数LOG_BUFFER决定,修改该参数需要重启实例。
适当的redo log buffer参数值能够明显的提升系统吞吐量,尤其对于插入,更新,删除大数据量的系统。
默认的log buffer值:MAX(0.5M,(128K*number of cpus)),通常默认值是足够的。
增加log buffer的值对系统性能或可恢复性不会产生负面影响,而仅仅会使用额外的内存。


评估Log Buffer

关注redo buffer allocation retries等待事件:用户进程等待redo log buffer空间的次数。

redo buffer allocation retries的值应该接近于0。这个等待由log buffer太小或checkpointing导致。你可以增加log buffer的值,或者提升checkpointing或归档进程。

另一个需要关注的等待事件:log buffer space。
v$session_wait视图指明在”log buffer space%”事件过程中,是否存在因会话向日志缓冲区中写入数据的速度大于LGWR写出数据的速度,而产生的任何对日志缓冲区空间的等待。

如果出现log buffer space等待事件,
可以增加log buffer的值

或将重做日志文件移动到更快的磁盘,如条带化磁盘。

参考:

Configuring and Using the Redo Log Buffer
http://docs.oracle.com/cd/B19306_01/server.102/b14211/memory.htm#i29756


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics