暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

事务生命周期

原创 王三又 2020-05-23
1837

(1) 当会话准备通过DML 操作(如插入、更新和删除操作)更改块时,首先必须获得
所有缓冲区高速缓存锁(排他锁)。
(2) 一旦获得了缓冲区高速缓存锁,就生成描述更改(变更向量)的重做数据并将其存
储在进程的程序全局区(Program Global Area,PGA)中。
(3) 获得重做复制锁,在持有重做复制锁时,也获得了重做分配锁。成功获得重做
分配锁后,就在重做日志缓冲区中分配空间。一旦分配了空间,就释放重做分配锁。这
第3 章 重 做 处 理
103
个锁被高度竞用,因此必须尽快释放。
(4) 安排好重做空间管理后,即可将生成的重做数据从进程的PGA 复制到重做日志
缓冲区中。复制完毕后,就释放重做复制锁。
(5) 现在会话前台可确切告知LGWR 将重做日志缓冲区转储到磁盘。注意,尚未使
用DML 更改信息更新数据库块。此时将更新缓冲区高速缓存。
(6) LGWR 将重做缓冲区转储到ORL 中,并向会话确认完成。此时,事务永久保存
到磁盘。注意,到现在尚未完成提交。
(7) 在未来某个时候,到了检查点时间,数据库写入进程将以前修改过的数据库缓
冲区写入磁盘。
注意,在DBWR 进程将数据库缓冲区转储到磁盘前,LGWR进程必须已经将重做缓
冲区写入磁盘。由写前日志记录协议(write-ahead logging protocol)强制执行这个明确的顺
序,该协议指出,未记录到重做日志中的更改不能出现在数据文件中。该协议可以保证:
如果事务在提交前出现故障,可以撤消事务,从而保持事务的原子性。
最后对事务生命周期强调的一点是,必须提交事务。事务提交过程会分配一个SCN,
并经历前述的事务生命周期步骤。COMMIT 是事务的一个重要元素,因为这标志着事务
的结束,并保证以前生成的重做数据传播到磁盘上。这称作提交时强制日志记录(log-force
at commit)。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论