2016 - 2024

感恩一路有你

redo和undo的区别 ORACLE中,数据库的redo与undo分别是什么呀,两者是什么关系呢?

浏览量:1687 时间:2021-03-15 11:47:06 作者:admin

ORACLE中,数据库的redo与undo分别是什么呀,两者是什么关系呢?

Redo用于日志记录。撤消用于记录数据备份。举一个简单的例子来说明(实际的过程要复杂得多):1。当您发出update语句时,Oracle首先将更改前后的信息写入redo(当满足某些条件时,日志写入过程写入日志文件)。然后将更新前的数据复制到undo中。三。用户回滚后,Oracle将在undo中覆盖数据。用户提交后,Oracle可以根据重做信息恢复数据。(当然,您也可以使用undo来实现闪回)简而言之,让我们慢慢理解它。

ORACLE中,数据库的redo与undo分别是什么呀,两者是什么关系呢?

[session

事务处理

1。计算从更新的元组到原始元组的增量信息,并将增量复制到回滚段作为undo;

2。写入重做日志以记录对回滚段的更改。回滚段也由缓冲区管理组织管理,这相当于对页面的更改;

3。将缓冲区中相应的元组更新为新值,并回滚新值4。写重做日志来记录对页面的更改(回滚段);

5。将已更改页的状态更改为dirty,表示该页将被刷新

log flushed,并且当前事务的最后一个LSN(日志序列号)之前的重做日志将写入持久存储。

崩溃恢复过程

1。在启动开始时,检查数据库是否在最后一次退出时崩溃;

2。找到最近的检查点;

3。当定位到此检查点时,滑动磁盘的数据页并检查校验和。如果不正确,则表示该页在上次写入时未完成。使用双写缓冲区读取内存缓冲区中的正确页并将其更新到内存缓冲区中的页;

4。按顺序分析重做日志(从最后一个检查点到最后一个LSN),以确定未提交的事务;

5。按顺序执行重做。这些重做日志不仅包括对数据段(write tuple)的更改,还包括对回滚段(write undo)6的更改。回滚所有未提交的事务。

mysql进行回滚事物的时候,是怎么样根据redo log和undo里面记录的sql进行的?

撤消日志用于存储数据修改前的值。假设修改TBA表中id=2的行数据,并将name=“B”改为name=“B2”,则使用undo log来存储name=“B”的记录。如果修改异常,可以使用undo log进行回滚操作,保证事务的一致性。

数据更改操作主要来自insert update delete,undo log分为两种,一种是insert undo(插入操作),记录要插入的唯一键值;一种是update undo(包括update和delete操作),记录修改的唯一键值和旧列记录。

redo和undo的区别 mysql redo和undo的区别 oracle redo日志

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。