Oracle的Redo log和Undo log的区别

先回答问题

Redo Log (重做日志)和Undo Log(撤销日志)都是用于数据恢复,它们最大区别在于:

1.Redo Log 用于确保数据库能够在发生故障后恢复到一致状态。它记录了对数据库的所有操作,并在事务提交时持久化,用于重做这些修改。

2.Undo Log 用于提供数据库回滚功能。它记录了事务未提交前数据的原始原始状态,以便在事务回滚时恢复数据。Undo Log还用于实现一致性读,允许查询在事务进行中读数据的旧版本。

Redo Log(重做日志)

主要功能:

1.提供数据库的一致性恢复:无论系统是因为硬件故障,操作系统崩溃还是数据库实例崩溃而导致的异常关闭,Redo Log 日志确保数据库能够恢复所有已提交的事务。

2.它通过存储每个更改操作的"重做信息"来实现恢复。这里的重做信息包含了足够的步骤和数据使数据库能够重现这些变化。

存储位置:

Redo Log 保存在磁盘的redo log 文件,oracle数据库会周期性地将重做记录写入这些文件。

Undo Log(撤销日志)

主要功能:

1.提供回滚功能:当用户或系统选择回滚一个事务时,Undo Log允许恢复数据到事务未提交前的状态。

2.支持一致性读:多版本并发控制(MVCC)机制依赖Undo Log ,支持读请求在未完成事务期间读取旧版本的数据,确保其他事务活动的隔离性。

实际应用区分

1.在数据库恢复方面,Redo Log 至关重要。如果系统崩溃,只要有redo log存在,数据库就可以通过重做未完成提交的事务达到一致性状态。

2.在事务操作方面,Undo log 非常重要,因为它允许用户撤销尚未提交的事务,同时在并发环境中提供一致性读,这对于数据库性能优化相当重要。

相关推荐
广州浮点FLOATLIC30 分钟前
Mentor Graphics浮动许可证管理为什么一到流片节点就失控
java·大数据·数据库·许可证管理·cad 许可证优化
小王C语言1 小时前
MySQL 库的操作:字符集和校验规则、数据库的增删查改、备份和还原
数据库·mysql
小王C语言1 小时前
MySQL 数据类型:数值类型、字符串类型、日期和时间类型、enum 和 set、find_in_set 查询
android·数据库·mysql
MC皮蛋侠客2 小时前
Redis 系列(六):过期、内存淘汰与内存优化——让 Redis 活得更久
数据库·redis·bootstrap
杜子不疼.2 小时前
模型效果不好时,我现在会先看数据集
数据库
夜雪一千2 小时前
MySQL的事务是什么?原理、ACID、隔离级别与实战详解
数据库·mysql
会编程的土豆2 小时前
从「锁」到「时间」:后端里几个容易混的概念
java·开发语言·数据库·goland
上下求索,莫负韶华2 小时前
笔记-数据库事务和java事务和切面
java·数据库·笔记
黄华SJ520it3 小时前
顶俏洗衣液模式制度开发介绍:S2B2C社交分销+多门店核销系统全解析
前端·数据库·小程序·零售·系统开发
大黄说说3 小时前
Android 本地存储深度对比:SharedPreferences、MMKV、Room 数据库怎么选?
android·数据库