`

REDO LOG 与 UNDO LOG这两个概念的区别

阅读更多
重做日志:每当有操作执行前,将数据真正更改时,先前相关操作写入重做日志。这样当断电,或者一些意外,导致后续任务无法完成时,系统恢复后,可以继续完成这些更改

撤消日志:当一些更改在执行一半时,发生意外,而无法完成,则可以根据撤消日志恢复到更改之前的壮态.

当用户在Buffer Cache中修改数据时,Oracle并不会立即将修改数据写出到数据文件上,因为那样做效率会很低,到目前为止,计算机系统中最繁忙的部分是磁盘的 I/O操作,Oracle这样做的目的是为了减少IO的次数,当修改过的数据达到一定数量之后,可以进行高效地批量写出。
大部分传统数据库(当然包括Oracle)在处理数据修改时都遵循no-force-at-commit策略。也就是说,在提交时并不强制写。那么为了保证数据在数据库发生故障时(例如断电)可以恢复,Oracle引入了Redo机制,通过连续的、顺序的日志条目的写出将随机的、分散的数据块的写出推延。这个推延使得数据的写出可以获得批量效应的性能提升。
同Redo Log Buffer类似,Redo Log File也是循环使用的,Oracle允许使用最少两个日志组。缺省情况下,数据库创建时会建立3个日志组。
    SQL> select group#,members,status from v$log;
    GROUP#    MEMBERS STATUS
    ———- ———- —————-
    1          1 INACTIVE
    2          1 CURRENT
    3          1 INACTIVE
当一个日志文件写满之后,会切换到另外一个日志文件,这个切换过程称为Log Switch。Log Switch会触发一个检查点,促使DBWR进程将写满的日志文件保护的变更数据写回到数据库。在检查点完成之前,日志文件是不能够被重用的。
分享到:
评论

相关推荐

    3000帧动画图解MySQL为什么需要binlog、redo log和undo log.doc

    MySQL数据库管理系统需要binlog、redo log和undo log三个重要的日志系统,以确保数据的一致性和持久性。下面是对这些日志系统的详细解释: 为什么需要分层设计 MySQL数据库系统采用分层设计,将Server层和存储引擎...

    MySQL的redo log、undo log、binlog

    2-5、**redo log与binlog的区别**: - 作用不同:redo log保证事务层面的持久性,binlog负责数据库级别的恢复。 - 内容不同:redo log为物理日志,记录物理变化;binlog为逻辑日志,记录SQL逻辑。 综上所述,MySQL...

    2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?.doc

    undo log 的格式主要包括 roll_pointer 指针和 trx_id 事务 id,通过 trx_id 可以知道该记录是被哪个事务修改的,通过 roll_pointer 指针可以将这些 undo log 串成一个链表,这个链表就被称为版本链。 redo log 是 ...

    MySQL数据库之undo log和redo log工作原理.png

    MySQL数据库之undo log和redo log工作原理.png,这是一份图例,画图表示undo log和redo log的工作原理

    41 在Buffer Pool执行完增删改之后,写入日志文件的redo log长什么样.pdf

    然而,redo log并不是无限制增长的,它有一个循环使用的机制,需要定期被归档,以便释放空间,这就涉及到checkpoint的概念。 在讨论redo log时,我们还经常听到“预写式日志”(WAL)和“异步提交”等概念。预写式...

    详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    控制)的基础,用于非锁定读取,使得读取操作无需等待事务的完成。在InnoDB存储引擎中,undo log 存储在表空间内,分为两种类型:...理解并合理配置这两个日志系统,对于提升MySQL数据库的性能和数据安全性至关重要。

    redo与undo_a.pdf11

    "redo与undo_a.pdf"很可能是关于这个主题的一个详细教程或研究报告,可能涵盖了如何配置和管理redo日志文件,如何使用undo来支持事务的ACID属性(原子性、一致性、隔离性和持久性),以及如何在Oracle数据库中实现...

    RAC下的REDO和UNDO管理

    与REDO日志类似,每个RAC实例都有自己的UNDO段,可以通过`undo_tablespace`参数指定。UNDO数据存储在共享存储中,确保在一致性读取和恢复过程中,即使某个节点出现故障,其他节点仍然可以访问所需的UNDO信息。这保证...

    undo&redo;.docx

    在Oracle数据库系统中,撤销(Undo)和重做(Redo)是两个至关重要的概念,它们主要用于事务管理和数据恢复。撤销操作允许用户撤销对数据库的最近更改,而重做操作则用于在系统崩溃或错误发生时恢复数据。 撤销日志...

    innodb log漫游 @何登成1

    - InnoDB的Redo Log通常由两个文件组成,循环使用。每个文件分为多个段(segment),每个段包含多个页(page)。 - LSN(Log Sequence Number)是InnoDB日志管理的关键,用于跟踪Redo Log的写入位置和恢复点。 6....

    mysql三种日志文件的介绍

    redo log与binlog的区别在于,redo log是恢复在内存更新后,还没来得及刷到磁盘的数据,而binlog是存储所有数据变更的情况。redo log文件的内容是会被覆盖的,而binlog文件记录了所有数据变更的情况。 三、undo log...

    InnoDB存储引擎Log详解收集.pdf

    MySQL数据库的InnoDB存储引擎是其核心特性之一,它提供了强大的事务处理能力,这得益于其对Undo Log和Redo Log的高效使用。Undo Log和Redo Log是事务管理的重要组成部分,它们确保了事务的原子性(Atomicity)和持久...

    InnoDB-undo-log与MVCC1

    分析这两个系统之间的异同,可以帮助我们更深入地理解数据库并发控制的原理。 undo log有两种格式:insert undo log和update undo log。前者只在插入数据时生成,而后者在更新数据时生成,且更受关注,因为它涉及到...

    InnoDB存储引擎Log详解.pdf

    MySQL数据库的InnoDB存储引擎是关系型数据库管理系统的基石,其强大的事务处理能力和高可用性在很大程度上得益于其内部的Log机制,主要包括Undo Log和Redo Log。这两者是实现事务ACID特性的关键,同时也是优化数据库...

    Oracle日志介绍

    #### 六、redo log与undo log的区别 - **redo log**:记录数据的修改操作,用于前滚恢复,即当数据库重启时,通过redo log可以重放已提交事务的修改,确保数据的一致性。 - **undo log**:记录数据的更改前状态,...

    oracle undo详解

    Undo信息与重做日志(Redo Log)有所不同,Redo Log记录了如何重新生成更改,用于数据库的向前滚动恢复,而Undo则记录如何还原更改,用于回退和读取一致性。 管理Undo数据主要包括监控Undo表空间的空闲空间,防止...

    py_innodb_page_info工具

    这就需要用到如`py_innodb_page_info`这样的工具,它为我们提供了一扇窗口,让我们可以深入到InnoDB存储引擎的底层,直观地理解日志(redo log和undo log)以及数据文件的工作方式。本文将详细介绍`py_innodb_page_...

Global site tag (gtag.js) - Google Analytics