您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

oracle 10g数据库的异步提交

 


Oracle10gR2新特性:Asynchronous COMMIT

对于Oracle的commit机制,相信大家都已经非常的熟悉了。Oracle对于commit采取了同步写事务log的方式,也就是说,一旦发出commit命令,那么必须等待事务相关的所有redo都已经从 log buffer写出到redo logfile以后,才会控制权返回发出commit的进程。

 

同步commit有两个特点:

1.Immediate,发出commit命令后,立即将redo写出

2.Wait,在redo写出过程中,必须等待

但是,Oracle10gR2开始,一种新的commit机制被引入,这就是异步commit机制。也就是说,不必等到事务相关redo写出就可以返回了,异步commit也有两种特点:

1.Nowait,发出commit命令后,不关redo是否写出,立即返回控制权

2.Batch,redo的写出可以想buffer一样执行批量写出,以提高性能

当然,同步commit也可以batch,异步commit也可以将redo立即写出,所以上述四个特性可以自由组合。

这样,commit引入了新的语法:

COMMIT [WRITE [IMMEDIATE | BATCH] [WAIT | NOWAIT] ]

默认情况下,commit的机制和以前一样,也就是相当于

COMMIT WRITE IMMEDIATE WAIT;

当然,这个默认机制可以通过初始化参数修改,所以Oracle10gR2又引入了一个新的参数COMMIT_WRITE,可能的取值包括

COMMIT_WRITE='{ IMMEDIATE | BATCH } , { WAIT | NOWAIT }'

异步commit由于不能确保事务的redo已经写出到redo logfile当中,一旦实例崩溃,可能导致已经commit的事务无法恢复,使用该特性的时候需要慎重考虑。

 

 


(以上内容摘于网络,如有侵权,请告之,将第一时间删除)

相关文章 [上一篇] Oracle数据库动态注册和参数local_listener使用
010-56426307(59426319)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-56426307,59426319 QQ讨论群:243729577 182441349 邮箱:yuezt@cuug.com
通信地址:北京市海淀区紫竹院路88号紫竹花园D座703(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号