Welcome 微信登录

首页 / 数据库 / MySQL / 配置并使用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空间的次数。[sql]
  1. SQL> SELECT NAME, VALUE  
  2.   2    FROM V$SYSSTAT  
  3.   3   WHERE NAME = "redo buffer allocation retries";  
  4.    
  5. NAME                                                                  VALUE  
  6. ---------------------------------------------------------------- ----------   
  7. redo buffer allocation retries                                            0  
redo buffer allocation retries的值应该接近于0。这个等待由log buffer太小或checkpointing导致。你可以增加log buffer的值,或者提升checkpointing或归档进程。

另一个需要关注的等待事件:log buffer space。
v$session_wait视图指明在”log buffer space%”事件过程中,是否存在因会话向日志缓冲区中写入数据的速度大于LGWR写出数据的速度,而产生的任何对日志缓冲区空间的等待。
[sql]
  1. SQL> SELECT sid, event, seconds_in_wait, state  
  2.   2    FROM v$session_wait  
  3.   3   WHERE event = "log buffer space%";  
  4.    
  5.        SID EVENT                                                            SECONDS_IN_WAIT STATE  
  6. ---------- ---------------------------------------------------------------- --------------- -----  
如果出现log buffer space等待事件,
可以增加log buffer的值 或将重做日志文件移动到更快的磁盘,如条带化磁盘。Oracle 行迁移与行链接两台MySQL数据库数据同步实现相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数