Log buffer基本上只有一个redo allocation latch的latch保护,该latch的工作形式是以顺序的形式工作的。这是由log buffer的工作原理所决定的,由于日志的写入必须是以顺序循环的方式写入的,不同的条目必须按顺序写入才能保证互不干扰。但是只有一个单一latch来管理log buffer的话,那么如果系统非常繁忙,事务日志产生非常快的话,将会导致latch的争用,不同的会话可能将一直等待他们相应的日志条目copy到log buffer中。因此Oracle另外引入了redo copy latch的latch来管理log buffer。redo copy latch可以减少一个会话持有redo allocation latch的时间,使用了redo copy latch,一个redo allocation latch将只需用很短的时间内来决定分配日志条目的空间,接下来的日志条目的copy将由redo copy latch来完成,以减轻redo allocation latch的负担。[@more@]
redo copy latch是由两个初始化参数来管理的:log_simultaneous_copies和log_small_entry_max_size。log_simultaneous_copies表示redo copy latch的启动数量,默认情况是cpu个数的2倍。log_small_entry_max_size用于指定一个日志条目的极限值,以决定是使用redo copy latch还是redo allocation latch来copy log entry to buffer(如果日志条目的产生大于该值的话,那么将会使用redo copy latch来copy redo entry to log buffer,如果小于的话,那么Oracle将会使用redo allocation latch来将日志条目copy至log buffer中?)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/60857/viewspace-803937/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/60857/viewspace-803937/