先回答问题
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 非常重要,因为它允许用户撤销尚未提交的事务,同时在并发环境中提供一致性读,这对于数据库性能优化相当重要。