ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 日志管理-2

日志管理-2

原创 Linux操作系统 作者:xhailiang 时间:2006-11-24 00:00:00 0 删除 编辑
──了解内部构造有助于优化数据库性能──

上次我们说明了REDO日志的基本处理流程,这次将详细介绍其中的LGWR进程,该进程执行REDO日志文件写入处理。



LGWR 将来自log Buffer的commit/rollback信息写入到REDO 日志文件,这些信息用于在数据库发生故障时恢复数据库。在频繁执行Update操作的情况下,LGWR会满负荷运行。这时, REDO日志文件写入操作的I/O性能就成为影响响应速度的关键因素。

LGWR操作在下列时间点会发生:
1. 距上次的写入达到3秒
2. 事务被提交(commit)
3. REDO日志缓冲区使用量达到3分之1的时候
4. DBWR要往数据文件执行写回动作之前
5. 出现checkpoint的时候

读过上面的内容,应该就能了解LGWR是Oracle中最忙碌的程序。以前我们曾经说过,性能调优的重点就是减少磁盘的物理I/O。那么,如果停止对磁盘频繁进行写入处理的LGWR,是不是就能大幅减少物理I/O呢?

<LGWR必须在任何时刻保持运行>
针对故障恢复启用复原功能之后,性能的关键就在于对REDO日志文件的写入处理。虽然我们总是准备好如何应对故障,但是故障并不会经常发生(事实上,本就不应该让故障发生)。

可能有很多人会想,“为什么不停止LGWR来让性能提高呢?”不幸的是,LGWR决不可以被停止。因为LGWR除了存储复原讯息之外,还有其他非常重要的功能。 如前所述,LGWR执行操作的时间点之一是“DBWR要往数据文件执行写回动作之前”。LGWR对REDO日志文件的写入作业正常结束之后,DBWR就会开始进行对数据文件写回的动作。

下图说明了如何进行这样的处理。

DBWR在用户执行commit之后不会立即对数据文件执行写回动作,而是“延迟写入”。延迟写入的目的是,不必在每次有更新的时候都写回数据文件,而是等到累积了一些更新数据之后,全部整理完毕,一次写回,减少对数据文件物理I/O次数。能够实现延迟写入,是因为REDO日志文件保证在发生故障的时候 (数据库缓冲区被更新的数据块的写回处理尚未完成时发生故障)数据仍然能保持完整性,所以不能停止LGWR。 能够执行延迟写入,是因为REDO日志文件保证在发生问题的时候(数据库缓冲区上被更新的数据块的写回处理尚未完成时发生故障)数据仍然会保有整合性,所以不能停止LGWR。

下次我们要说明DBWR和LGWR的物理I/O的差别。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/308563/viewspace-171945/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 日志管理-1
下一篇: 日志管理-3
请登录后发表评论 登录
全部评论

注册时间:2008-02-17

  • 博文量
    270
  • 访问量
    417169