数据库原理2

文章详细阐述了Oracle数据库中事务执行的三个关键步骤:重做数据记录了事务对数据块的修改信息;还原数据保存了事务开始前的数据副本;检查点队列跟踪事务修改的数据块。在事务提交时,这些信息会被持久化,并通过检查点机制确保内存中的数据块最终写入磁盘。
摘要由CSDN通过智能技术生成

事务的执行3

       接下来同时做三个工作。重做数据,还原数据,维护检查点队列。重做数据是由重做条目组成,每个重做条目对应一个数据块的修改,该重做条目记录了产生事务开始的scn和时间戳、事务编号、事务提交scn和时间戳、修改的类型以及修改的段的所属的类型和名称。重做条目生成后,会先存入重做日志缓冲区,再由日志写进程协调并整体刷新到联机重做日志以持久化保存,LGWR会在任何一个提交的时候、缓冲区三分之一满或记录1M缓冲数据时、联机重做日志组发生切换时、数据库写进程(DBWn)执行之前以及自上次日志写完后三秒钟时的任何一个条件成立时执行。还原数据是缓存高速缓冲区中原始的未修改的数据块的副本,在事务开始执行时由系统复制到还原表空间的还原段内保存,生成还原数据。如果因为存储空间不足等原因导致还原数据没有成功产生,则事务报错不允许执行。与此同时还必须维护检查点队列,新的检查点间隔都对应有新创建的一个检查点队列,该队列会记录凡是在当前检查点间隔之内开始执行的事务所要修改的每一个数据块的内存偏移量和提交状态。检查点队列中记录的数据块的顺序与重做条目写入重做日志的顺序一致。

       oracle通过操作系统的配合在CPU通用寄存器进行计算,修改相应的数据块,完成后给客户端应用发送已更新提示。服务器进程在收到用户发出的commit语句,会把检查点队列中相关数据块的提交状态改为已提交,并释放持有的锁资源,并返回给用户进程提交完成的信息。

       在用户看来,通过updata和commit语句对数据库的修改就全部执行成功了,但在管理员视野中,这个修改只是在内存中的修改,还需要写入磁盘文件来持久化保存。那么内存中用户提交的数据块是如何写入到磁盘中,这和检查点有关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值