理解redo(4)redo log buffer和LGWR

本文详细介绍了Oracle数据库中redo log buffer的作用,它作为redo records的缓存提高并发性能。LGWR进程负责将buffer中的records批量写入redo file,确保事务的提交安全。在事务提交时,LGWR通过特定触发条件执行写操作,避免log file sync等待事件,保证数据安全。文章还讨论了log buffer大小对性能的影响,并提供了计算redo大小的方法。
摘要由CSDN通过智能技术生成

    二者的由来,有二:

    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值