首頁 > 資料庫 > mysql教程 > 执行Commit时Oracle做哪些工作

执行Commit时Oracle做哪些工作

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-07 16:57:14
原創
873 人瀏覽過

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

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.执行块清理,清理块头保存的事务信息;

linux

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板