事务提交都做了哪些事?(Commit Transactions)

事务提交都做了哪些事?(Commit Transactions)

上一篇 / 下一篇  2012-10-14 19:13:42

提交一个事务意味着将此事务中的 SQL语句对数据的修改永久的记录到 数据库中。
在一个修改了数据的事务被提交之前,Oracle进行了以下操作:
a Oracle生成了 undo information,undo information 包含了事务中各个SQL语句所修改的数据的原始值。
b Oracle 在SGA的重做日志缓冲区( redo log buffer) 中生成了重做日志条目(redo log entry)。重做日志记录中包含了对数据块和回滚块所进行的修改操作。这些记录可能在事务提交之前被写入磁盘。
c 对数据修改已经被写入SGA中的数据库缓冲区( database buffer)。这些修改可能在事务提交之前被写入磁盘。

committed transaction中对数据的哦修改被存储在SGA的数据库缓冲区(database buffer)中,他们不一定立即被后台进程DBWn写入数据文件内。Oracle将选择适当的时机进行写操作以保证系统的效率。因此写操作及可能发生在事务提交之前,也可能在提交之后。
 
当事务被提交之后,Oracle 进行一下操作:
1 undo 他变了谁怕测 内部的事务表(transaction table)将记录此次提交,Oracle 为此事务分配一个唯一的系统变化编号(system change number, SCN),并将其记录在事务表中。
2 The log writer process,LGWR 将SGA内重做日志缓冲区(redo log buffer) 中的重做日志条目(redo log entry) 写入重做日志文件(redo log file)。同时还将此事务的SCN也写入重做日志文件。有以上两个操作构成的原子事件(atomic event) 标志着一个事务成功的提交。
3 Oracle 释放加于表或数据行上的锁。
4 Oracle将事务标记为完成。
 
注释:事务与undo是紧密相关的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值