4.2.2 重做日志缓冲区

重做日志是对用户事务所产生的记录,通过重做日志能够重新产生数据,它是保证数据安全的一种重要方法。当用户执行DML(INSERT、UPDATE和DELETE)或者DDL(CREATE、DROP、ALTER等)操作时,服务器进程首先将这些操作记录在重做日志缓冲区中,然后才去修改相应的数据。重做日志缓冲区中的内容在一定的时机下,被LGWR后台进程写入重做日志文件。如果数据库系统出现了故障,可以根据重做日志文件中的重做日志对数据库进行恢复。

引入重做日志缓冲区的好处是显而易见的:将日志记录在重做日志缓冲区中,比直接写入重做日志文件要快得多。另外,LGWR进程并不是在每次用户访问数据之后,都要将重做日志缓冲区中的日志写入重做日志文件,而是将最近一段时间产生的重做日志一起写入,这样可以减少访问磁盘的次数,从而提高系统的性能。

重做日志缓冲区的大小由初始化参数LOG_BUFFER指定。在一定的时机下,后台进程LGWR会将重做日志缓冲区中的内容写入重做日志文件。例如,在重做日志缓冲区被消耗了1/3时。由此可见,重做日志缓冲区越大,就可以记录越多的用户操作,写重做日志文件的次数也就越少,这样也可以提高数据库的性能。当然,重做日志缓冲区的大小是受物理内存大小的限制的。