《Oracle编程艺术》学习笔记(16)-事务持久性
来源:互联网 发布:mac清理重复文件 编辑:程序博客网 时间:2024/05/24 04:07
通常情况下,事务提交后,它的改变就是持久的。即使提交后数据库崩溃,改变也永久存储到数据库中了。
但是,有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来等待提交完成。
- 《Oracle编程艺术》学习笔记(16)-事务持久性
- 学习《Oracle 9i10g编程艺术》的笔记 (十一) 事务
- 《Oracle编程艺术》学习笔记(15)-事务原子性
- 《Oracle编程艺术》学习笔记(23)-段
- 《Oracle编程艺术》学习笔记(27)-散列聚簇表
- 《Oracle编程艺术》学习笔记(5)-Oracle中的文件
- 《Oracle编程艺术》学习笔记(11)-Oracle进程
- 《Oracle编程艺术》学习笔记(12)-Oracle的锁
- 学习《Oracle 9i10g编程艺术》的笔记 (一)
- 学习《Oracle 9i10g编程艺术》的笔记 (二)
- 学习《Oracle 9i10g编程艺术》的笔记 (三)
- 学习《Oracle 9i10g编程艺术》的笔记 (四)
- 学习《Oracle 9i10g编程艺术》的笔记 (五)
- 学习《Oracle 9i10g编程艺术》的笔记 (六) 体系结构
- 学习《Oracle 9i10g编程艺术》的笔记 (七) 文件
- 学习《Oracle 9i10g编程艺术》的笔记 (九) 进程
- 学习《Oracle 9i10g编程艺术》的笔记 (十) 锁
- 学习《Oracle 9i10g编程艺术》的笔记 (十三) 索引
- C语言UNIX之父丹尼斯.里奇去世了....
- mysql的bind-address设置为127.0.0.1,通过localhost连接访问不了
- 《当程序员的那些狗日日子》(五十三)破局(下)
- 《Oracle编程艺术》学习笔记(15)-事务原子性
- Half-space Hyperplane
- 《Oracle编程艺术》学习笔记(16)-事务持久性
- 《Oracle编程艺术》学习笔记(17)-DEFERRABLE约束
- android学习——android Animation 动画效果
- Debug 运行正常但 Release 失败的问题,Debug 和 Release 编译方式的本质区别
- 《Oracle编程艺术》学习笔记(18)-REDO和UNDO
- java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决办法
- IOS多线程开发之GCD
- SQLite入门与分析(一)---简介
- VC combobox 的使用(添加、删除、插入等)