二者的由来,有二:
1)redo records的产生十分频繁
2)server process每次产生的量却不大
倘若每次产生的redo就须由大量高并发sp写入redo log file,则存在两个问题:
1)I/O开支大
2)redo file争用
由此,oracle在redo log机制中引入了log buffer和LGWR。
redo log buffer缓存了sp产生的redo records,提高了oracle高并发的性能。LGWR则将log buffer中的records批量flush到redo file。对于oracle而言,只要对数据库的改变写入到redo log file,那么相关的事务绝不丢失。
在事务提交时,会产生一个commit的change vector,这个CV被写入log buffer后,sp会发出一个信号,要求LGWR将和这个事务相关的redo records写入到redo file,只有这个事务相关的redo全部安全着陆,sp才会向client发出事务提交成功的信息“Commit Complited”。
由于redo entries实是娇贵且重要。为了保障redo records的安全,oracle还实现了:
1)LGWR绕过OS的缓冲直接写到redo log file,避免宕机而丢失redo
2)r