自学内容网 自学内容网

Undo 表空间和Redo 表空间

在数据库中,除了数据表空间索引表空间分别用于存放表数据和索引文件之外,还有 Undo 表空间Redo 表空间是两个用于支持事务处理和数据恢复的关键概念


1. Undo 表空间(撤销表空间):

  • 作用

    • 存储用于回滚事务的数据(撤销信息),以支持事务的一致性。
    • 提供多版本并发控制(MVCC)所需的历史数据版本,确保事务在执行查询时能够看到一致的数据快照。
    • 如果事务回滚,Undo 数据会被用来恢复到事务开始前的状态。
  • 特点

    • 通常与用户的操作直接相关,例如更新、删除等。
    • 在事务提交后,部分 Undo 数据可能会被清理,但在使用 MVCC 时,可能仍会保留一段时间供查询使用。
  • 存储内容

    • 每条修改记录的“前镜像”(Before Image)。
  • 主要用途

    1. 回滚事务。
    2. 支持一致性读(查询运行时看到的数据快照)。

2. Redo 表空间(重做日志空间):

  • 作用

    • 记录事务修改后的数据(重做信息),以便在系统发生崩溃时通过重做操作恢复数据库。
    • 支持事务的持久性(即事务日志化)。
  • 特点

    • 与事务日志相关,记录数据的“后镜像”(After Image)。
    • 包括已提交和未提交事务的修改日志,直到事务完成和数据刷新到磁盘。
  • 存储内容

    • 数据页的修改信息(包括插入、更新、删除等操作的后续状态)。
  • 主要用途

    1. 数据库崩溃后的数据恢复。
    2. 确保事务日志不丢失。

两者对比:

特性Undo 表空间Redo 表空间
存储内容数据的“前镜像”(Before Image)数据的“后镜像”(After Image)
主要用途回滚事务、一致性读恢复数据、持久性保障
数据清理事务提交后,可能保留一段时间再清理按照日志策略清理,通常通过循环覆盖
写入时机用户数据操作时产生 Undo 记录事务提交或操作开始时产生 Redo 记录
与崩溃恢复相关较少(不用于崩溃恢复)关键(崩溃恢复的核心)

两者关系

Undo 和 Redo 空间是互补的:

  • Undo 关注事务的一致性和回滚。
  • Redo 关注数据的持久性和恢复。

例如:

  • 在事务发生时,Undo 会记录修改前的值,Redo 会记录修改后的值。
  • 如果系统崩溃,Redo 日志会用于恢复已提交事务的结果,Undo 日志会用于回滚未完成的事务。


原文地址:https://blog.csdn.net/weixin_41674401/article/details/144430876

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!