Undo 表空间和Redo 表空间

news/2024/12/16 17:35:41/

数据库中,除了数据表空间索引表空间分别用于存放表数据和索引文件之外,还有 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 日志会用于回滚未完成的事务。


http://www.ppmy.cn/news/1555635.html

相关文章

支持自定义离线地图地理区域,查询组件及数据源功能增强,DataEase开源BI工具v2.10.3 LTS发布

2024年12月9日,人人可用的开源BI工具DataEase正式发布v2.10.3 LTS版本。 这一版本的功能变动包括:数据源方面,API数据源和Excel数据源支持对字段类型和长度进行设置;图表方面,离线类地图支持自定义地理区域设置&#…

【C/C++】事件驱动架构中,高性能位移操作事件状态位的优势

你提到的两个操作 combined_events ^ EVENT_ONE; 和 combined_events & ~EVENT_ONE; 是位操作中非常常见的两种方式,分别用于切换标志的状态和清除标志。下面我们详细解释这两种操作的工作原理,并通过具体的例子来说明它们是如何处理的。 1. 切换标…

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 听名字有点熟,我们在图像旋转里接触过仿射变换,知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程,转换过程坐标点的相对位置和属性不发生变换&a…

Spring Boot 配置多数据源并手动配置事务

Spring Boot 配置多数据源并手动配置事务 一、为什么多数据源需要手动配置?二、配置多数据源1. 数据源配置类 (DataSourceConfig)2. 主数据库 MyBatis 配置类 (PrimaryDbMyBatisConfig)3. 从数据库 MyBatis 配置类 (SecondaryDbMyBatisConfig)4. application.yml 配…

【数据分享】2013-2023年我国省市县三级的逐年CO数据(免费获取\excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2023年的省市县三级的逐年PM2.5数据、2000-2023年的省市县三级的逐年PM10数据、2013-2023年的省市县三级的逐年SO2数据、2000-2023年省市县三级的逐年O3数据和2008-2023年我国省市县三级的逐…

MySQL 性能调优:打造高效数据库

SQL 语句层面的性能调优策略 合理选择字段属性 在创建 MySQL 表时,为了获取更好的性能,选择合适的字段属性至关重要。 首先,要依据实际情况合理设置字段的类型及宽度。例如,对于像手机号码这类固定长度为 11 位的字段&#xff…

SpringCloud微服务实战系列:01让SpringCloud项目在你机器上运行起来

目录 项目选型 项目安装-本地运行起来 软件安装: 项目启动: 总结&答疑 项目选型 软件开发,基本上都不会从0开始,一般都是在其他项目或者组件的基础上进行整合优化迭代,站在巨人肩膀上才能看得更远&#xff0c…

.NET MAUI开发的安卓、iOS软件和Java开发的安卓和Swift开发的iOS的区别

1. 开发语言和平台 .NET MAUI: 使用 C# 作为开发语言。通过 .NET 6/7/8 平台编译并打包应用。.NET MAUI 会根据目标平台(Android 或 iOS)编译和运行不同的本地代码。代码是跨平台的,开发者可以使用相同的代码库为 Android 和 iOS …