Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104574586
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-30 16:32:24

 

配置和使用REDO LOG BUFFER
  我们知道服务器进程会把把buffe cache里面的数据库块改变保存在重做log buffer里面。在满足一定条件,LGWR进程就会把重做buffer log里面的数据写入在线日志中:
  1.log buffer 超过它1/3大小
  2.服务器进程运行COMMIT或者ROLLBACK会触发服务器进程运行LGWR
  3.DBWR进程会触发LGWR
  一个较大的buffer能够给于更多redo空间,使得LGWR能够有效的写出redo数据。一个太小的buffer,如果update频繁,那么LGWR也会不停的将数据刷出。
  如果一个服务器拥有强劲的CPU和差劲的磁盘,一个较大buffer可以使得处理器可能会弥补磁盘差劲的效率。在这种情况,你还可以:
  1.改进checkpointing 或者 归档进程。
  2.改善log writer的性能(移动所有online log到更快的磁盘)
  更好的使用redo log buffer 其实很简单:
  控制好你的commit事务。
  当读取大量数据的时候,使用NOLOGGING操作。
  redo log buffer的大小使用初始化参数LOG_BUFFER定义,它可以动态修改。
确定log buffer的大小
  通常当应用程序的插入,修改,删除大量的数据的时候,需要改变默认的log buffer的大小。log buffer在SGA里面是相对小的一块,但是适当的配置它的大小,在很多请客下能够显著的改善性能。
  一般,在系统初始估算的buffer大小的规则是:
  最大(0.5M, (128K * number of cpus))
  在大多数系统中,超过1M的log buffer 不会有任何性能改善。不过过多的log buffer也不会对性能有负面的影响,它只是多余的内存罢了。
Log buffer的统计
  统计REDO BUFFER ALLOCATION RETRIES反应了用户进程等待redo log buffer空间的情况。这个统计在V$SYSSTAT中可以查询到。
  查询如下:
  SELECT NAME, VALUE
  FROM V$SYSSTAT
  WHERE NAME = 'redo buffer allocation retries';
 如果redo buffer allocation retries增长过快,那么说明进程存在很多redo log buffer的空间分配等待。可以试着增加LOG_BUFFER的大小。

 

原文:http://valen.blog.ccidnet.com/blog-htm-itemid-154484-do-showone-type-blog-uid-51502.html

阅读(380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~