COMMIT是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,在数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生:

1.在SGA(Buffer Cache)中已经生成了undo块;

2.在SGA(Buffer Cache)中已经生成了产生改变的数据块和索引块;

3.在REDO LOG BUFFER生成了前面两项的redo信息;

4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经有一部分输出到了磁盘;

5.所有需要的锁已经获得;

当执行COMMIT命令时,只执行如下操作:

1.为事务生成SCN:SCN是Oracle数据库的一种计时信息,用以保证事务的顺序性,同时还用于失败恢复和保证数据库的读一致性和检查点,无论何时何人提交,SCN自动加1;

2.将事务相关的未写入redo log file中的redo信息从redo log buffer写入到redo log file,这才是真实的COMMIT,这步操作完成,说明我们已经完成COMMIT,事务从V$TRANSACTION中移除;

3.V$LOCK中记录的SESSION关于该事务的锁会释放,其他需要这些锁的事务被唤醒;

4.执行块清理,清理块头保存的事务信息;

最新文章

  1. [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
  2. 【转】java.lang.OutOfMemoryError: Java heap space的解决
  3. csu oj 1811: Tree Intersection (启发式合并)
  4. git日志的查看与修改
  5. baidu面试题
  6. Qt模型/视图、委托
  7. Centos7 最小系统安装Redis
  8. 哈密顿绕行世界问题(dfs+记录路径)
  9. 应用canvas绘制动态时钟--每秒自动动态更新时间
  10. C#实现导出Excel
  11. vritualenv虚拟环境迁移
  12. idea integrate project
  13. 19南昌网络赛L
  14. ASP.Net Core "The type initializer for 'Gdip' threw an exception"
  15. 80端口被占用 导致apach无法启动问题
  16. 原生ajax函数封装
  17. beginner’s mistake
  18. kafka 主要内容介绍
  19. 让QtCreator在调试时显示字符串 Qt调试助手 QtDebuggingHelper qtc-debugging-helper
  20. ZH奶酪:最简单的Django安装方法(Windows 7)

热门文章

  1. social engineering toolkit
  2. k8s nfs
  3. PHP中的PDO数据对象
  4. 高可用etcd集群(三节点) + ssl双向认证
  5. 虚拟环境搭建Django项目
  6. js 中加减乘除 比较精确的算法,js本身有些运算会出错,这里给出较精确的算法
  7. git 如何取消add操作
  8. docker安装及基本使用
  9. linux之rename和mv的区别
  10. Python之算法评估-4