redo和undo产生阶段

以update为例,说明redo和undo的产生阶段:

update emp set ename='JOBS' where empno=7800;

当收到这条update指令请求时,oracle会先解析该update语句,并生成执行计划;执行前,会先在db buffer cache中寻找empno=7800的数据块,如果没有,则将emp表中相应数据从磁盘数据文件中读到db buffer cache,然后将empno=7800未被修改前的的数据块从db buffer cache读到undo segment,此时对undo segment的修改会产生一条redo(任何修改都会产生redo),然后将empno=7800记录的ename值改成'JOBS',此时对数据块的修改会产生另外一条redo。


转载于:https://my.oschina.net/mysweet/blog/190695

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL事务的两阶段提交(Two-Phase Commit,2PC)是一种用于保证分布式数据库事务的一致性的协议。它包括两个阶段:准备阶段和提交(或中止)阶段。 在准备阶段,协调者(通常是事务的发起者)会向所有参与者发送准备请求,并等待它们的响应。每个参与者会执行事务操作,并将操作结果写入redo log和undo log中。 redo log是MySQL中的一种日志,用于记录事务执行过程中所做的修改操作。它记录了在事务执行期间对数据库所做的修改,包括插入、更新和删除操作。redo log的目的是在数据库发生崩溃等异常情况时,可以通过重放redo log来恢复数据的一致性。 undo log也是MySQL中的一种日志,用于记录事务执行过程中所做的回滚操作。当事务需要回滚时,可以根据undo log中的信息将数据还原到事务开始之前的状态。 在准备阶段结束后,如果所有参与者都成功地执行了操作并准备好提交事务,协调者会发送提交请求。参与者收到提交请求后会将事务进行提交,并将提交结果反馈给协调者。如果有任何一个参与者无法执行操作或者出现错误,协调者会发送中止请求,参与者则会回滚事务。 通过两阶段提交协议,可以确保在分布式环境下的多个节点执行事务时,要么所有节点都成功地提交事务,要么都进行回滚,从而保证了数据的一致性。同时,redo log和undo log的使用可以提供数据的持久性和恢复能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值