commit和rollback
COMMIT过程
·已经在 SGA(系统全局区域)中产生了回滚段(Rollback segment)记录。
·已经在 SGA 中产生了修改数据块。
·已经在 SGA 中产生了上面两条的缓冲重做(redo)。
·取决于上面 3 项的大小和消耗的时间,一部分上面的数据可能已经刷新到硬盘上。
·已经获得所有的锁定。
当 COMMIT(提交)时,所有剩下的工作是:
·为事务产生一个系统改变号(System Change Number,SCN)。
·LGWR 把所有余下的缓冲区中的重做日志条目存储到硬盘上,并且在联机重做日志文件中记录
SCN。实际上,这个步骤就是 COMMIT。如果出现这个步骤,就已经提交了。删除了事务条目,意味
着已经提交了。在 V$TRANSACTION 视图中的记录将“消失”。
·释放会话占用的所有锁定,释放在入队列等待中被占用锁定的每个事项。
·访问多个修改事务块,如果它们仍在缓冲区高速缓存中,用快速模式访问和“清除”。
·像看到的一样,处理 COMMIT 只有很少的工作要做。时间最长的总是 LGWR 执行的操作,因为
它是物理硬盘的输入/输出(I/O)。LGWR 消耗的时间是由做日志缓冲区已经释放的内容限定的。LGWR
不会存储所有的工作,而且,当操作进行时,它将增加释放后台重做日志缓冲区中的内容。这样可以
立即释放所有重做(redo)的内容,避免 COMMIT 后等待过长时间。当
Rollback过程
·已经在 SGA 中产生了回滚段记录。
·已经在 SGA 中产生了修改数据块。
·已经在 SGA 中产生了上面的两条重做缓冲信息。
·取决于上面三项的大小和消耗的时间,一部分上面的数据可能已经刷新到硬盘上。
·已经获得所有的锁定。
当 ROLLBACK 的:
·撤捎所有己做的修改。这通过从 ROLLBACK(undo)段读取数据来完成,实际上就是逆向操作。
如果插入了一行,ROLLBACK 删除它。如果更新了一行,ROLLBACK 将逆向更新。如果删除了一行,
回滚将重新插入它。
commit和rollback的更多相关文章
- JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
- mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...
- 14.5.2.2 autocommit, Commit, and Rollback
14.5.2.2 autocommit, Commit, and Rollback 在InnoDB,所有的用户活动发生在一个事务里, 如果自动提交模式是启用的, 每个SQL语句形成一个单独的事务.默认 ...
- 14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚 如果自动提交模式被启用,在InnoDB里, 所有的用户活动发生在一个事务里, 每个SQL语句 ...
- flume-sink报错 java.lang.IllegalStateException: close() called when transaction is OPEN - you must either commit or rollback first
1. 确认代码无误(根据情况修改,表示若获得不了数据不会自动commit或者rollback): Event event = channel.take(); if (event == null) { ...
- Fescar: Fast & Easy Commit And Rollback
Fescar is an easy-to-use, high-performance, java based, open source distributed transaction solution ...
- 说commit,rollback
事务执行失败后,看做的是commit还是rollback:commit是把执行成功的部分提交了,rollback就是全回滚了.如果rollback失败了,此时不处理,等到客户端断开,MySQL内部默认 ...
- oracle 基础知识(五)--回滚(commit和rollback)
一,commit 01,commit干了啥 commit 就是提交的意思.也就是当你把99%的东西都做好了,然后你执行最后一步的操作...再commit前的话你可能啪啪啪啪啪,敲了几百条sql DML ...
- 转贴:PLSQL中 commit 和 rollback 的区别
PLSQL中 commit 和 rollback 的区别 原文链接:https://blog.csdn.net/jerrytomcat/article/details/82250915 一. comm ...
- 【SQL系列】从SQL语言的分类谈COMMIT和ROLLBACK的用法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SQL系列]从SQL语言的分类谈COMMIT和 ...
随机推荐
- 跨站请求伪造解决办法之——过滤referer
当然,referer也是可以伪造的,Http请求本身就没有不能伪造的东西. 所以本方法只能在一定程度上防止非法请求,仅供参考. 项目的web.xml中增加过滤器: <filter> < ...
- pip换国内源
pip换国内源 1.国内常用源 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu. ...
- cookie存中文
cookie存取: 存: Cookie cookie = new Cookie("title",URLEncoder.encode("标题","utf ...
- CSS3Transition添加多个过渡效果
本篇文章由:http://xinpure.com/css3transition-to-add-multiple-transition-effects/ 通过监听动画的结束事件,可以为一个元素添加多个动 ...
- LaTeX 制作表格
实例代码: \begin{table}[h] \centering \begin{tabular}{|c|c|} \hline \textbf{Distribution} & \textbf{ ...
- Python 实现字符串转换成列表 实现str转换list
其中Python strip() 方法用于移除字符串头尾指定的字符 split()就是将一个字符串分裂成多个字符串组成的列表 >>> image ='1.jsp,2.jsp,3.js ...
- atitit.http get post的原理以及框架实现java php
atitit.http get post的原理以及框架实现java php 1. 相关的设置 1 1.1. urlencode 1 1.2. 输出流的编码 1 1.3. 图片,文件的post 1 2. ...
- [k8s]组件日志级别说明
kubectl 执行命令时候 --v 调试, 也可以用作其他组件的 --v配置 参考: https://kubernetes.io/docs/user-guide/kubectl-cheatsheet ...
- jQuery 语法(一)
通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行“操作”(actions). jQuery 语法实例 $(this).hide() 演示 jQuery hide() 函 ...
- CCNA2.0笔记_STP
STP介绍 STP的主要任务是阻止在第二层网络(网桥或交换机)上产生网络环路(通过将特定的端口选为 Blocking state),来实现无环的拓扑 ; STP交换机之间使用Trunk连接 ; Cis ...