《Oracle编程艺术》学习笔记(16)-事务持久性

通常情况下,事务提交后,它的改变就是持久的。即使提交后数据库崩溃,改变也永久存储到数据库中了。
但是,有2种例外情况:
1)使用COMMIT语句新增的WRITE扩展
10gR2以上版本新增特性,包括下面2种选择
· COMMIT [WORK] WRITE WAIT 等同于COMMIT,需要等待提交完成(完成向REDO日志文件的物理写入操作),即同步提交。
· COMMIT [WORK] WRITE NOWAIT 不等待提交完成即返回,物理写入操作在后台进行,即异步提交,因此不能保证持久性
同步提交下,Oracle会请求LGWR把缓冲区的REDO日志写入在线REDO日志文件,这是物理写入操作,相对来说需要花费很多时间,甚至比事务中的DML语句更花费时间。
如果是异步提交,就不需要等待物理写入完成,可以大大提高性能,特别是有大量COMMIT的时候。
异步提交只适用于那些出现故障时可以自动重启执行,即使发生已提交却未能永久存储到数据库这种情况也是可以接受的应用。比如面向批处理的应用。

2)非分布式PL/SQL代码块中执行COMMIT
PL/SQL代码块会透明的使用异步提交。PL/SQL代码块中的COMMIT语句不等待物理I/O完成,而是在最后PL/SQL返回到客户应用之前等待完成向REDO日志文件的物理写入操作,也就是不管PL/SQL代码块中有几个COMMIT,PL/SQL只等待1次。
11g之后,可以调用COMMIT WRITE WAIT来等待提交完成。

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

转载于:http://blog.itpub.net/11980046/viewspace-736078/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值