热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle中commit做的工作

oracle中commit做的工作commit所用的时间是不受事务大小的影响的;commit的开销有两个因素:与数据库往返的通信,如果每个记录都提交,生成的往返通信量就会大很多;每次提交时,必须等待redo写到磁盘;执行comm...SyntaxHighlighter.all()

oracle中commit做的工作
 
commit所用的时间是不受事务大小的影响的;
commit的开销有两个因素:
数据库往返的通信,如果每个记录都提交,生成的往返通信量就会大很多;
每次提交时,必须等待redo写到磁盘;
 
执行commit命令所做的工作:
为事务生成一个scn  www.2cto.com  
lgwr将缓存重做日志条目写至磁盘,并把scn记录到在线重做日志文件中;
释放v$lock中记录着我们的会话所持有的锁;
 
如果事务修改的块还存在块缓冲区缓存中,就会被清理掉,以备后来的事务使用。
lgwr通常花费的时间不会太多,之所以能够大幅度的减少这个操作时间,是因为lgwr一直在以连续的方式写到磁盘
我们的事务通常会一直等待lgwr完成所有的写操作,并受到数据都已经在磁盘上的确认才会返回。
PL/SQL提供commit优化,等到pl/sql例程完成,我们从数据库返回到客户端的时候,他需要等到commit调用立即返回。

推荐阅读
author-avatar
549696530_c1f5e8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有