为什么PG只是用REDO方法来进行数据库的恢复

为什么PG只是用REDO方法来进行数据库的恢复

在阅读<PG数据内核分析>一书中, 看到这样一句话:

PG只是用REDO方法来进行数据库的恢复, 它不使用UNDO是因为其数据的多版本使得UNDO没有必要. 但从本质上来讲, PG日志并非是REDO日志, 而应该是UNDO/REDO日志, 其创建检查点时大体上服从UNDO/REDO日志创建检查点时要服从的规则, 只是做了一点改动.

为什么不使用UNDO呢?

我们知道Oracle数据库恢复时除过redo日志, 还需要undo日志. 看看Oracle数据库是如何恢复的. 先了解一下Oracle undo表空间的作用.

undo表空间

回退段介绍

在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中。一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段。

(1)回退段的作用

回退段主要有4个作用,分别是:事物回滚、数据库恢复、读一致性、闪回查询。

–事物回滚:当事物执行失败或用户执行回滚操作(rollback)时,Oracle会利用保存在回退段中的信息将数据恢复到原来的值;

–数据库恢复:当数据库实例运行失败,在数据库重启恢复时,Oracle先利用重做日志文件的信息对数据库进行恢复(包括已提交和未提交的事务),再利用回滚段中的信息回滚未提交的事务;

–读一致性:当一个用户对数据进行修改时,会预先将其原始值保存到回退段中,这时,如果有其它用户访问该数据,则访问回退段中的信息,使当前用户未提交的修改其他用户无法看到,保证了数据的一致性;

–闪回查询:通过保留在回退段中的信息,用户可以查询某个数据在过去某个时刻的状态

(2)回退段的工作方式

当事务开始时,系统分配给该事物一个回退段,在事务的整个生命周期中,当数据发生改变时,数据的原始值被复制到回退段中。回退段采用循环写的方式进行工作,当事务写满回退段的一个区之后,会接着写入回退段的下一个区,当所有的区都写满后,事务开始循环写入到第一个区或者分配新的区(datafile为autoextend)。回退段归用户sys所有,每个回退段至少包含2个区。

总结

个人理解, Oracle未提交数据恢复时, 需要从undo段空间中以回滚(undo)的方式获得"旧版数据", 并且还要写回到数据文件中. 而PG旧版数据就在数据文件中, 所谓恢复, 其实就是更改一下数据的标记, 即: 将原旧版数据"修改标记"成新的即可.

所以, 基于以上机制, 当为提交需要恢复的数据量很大时, PG的数据恢复会很快. 代价就是引入了Vacuum这样的机制.

当然, 上面讲了" PG日志并非是REDO日志", 这个后续研究明白了, 再讲.

参考

[Oracle]理解undo表空间

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库redo容灾恢复是指在数据库出现故障或灾难情况时通过使用redo日志来实现数据的恢复和容灾保护。 首先,redo日志是数据库中重要的日志文件之一,用于记录数据库的修改操作。当数据库发生故障或灾难时,通过redo日志可以将之前未提交的事务重新执行,从而恢复数据到故障之前的状态。 在数据库容灾恢复过程中,首先需要备份和保存redo日志。定期进行数据库备份,包括完全备份和增量备份,可以确保数据的安全性。而同时也需要将数据库redo日志保存到安全的存储介质,以免发生故障时丢失或损坏。 当数据库发生故障时,可以通过应用redo日志来进行数据库恢复。具体步骤如下: 1. 关闭数据库实例,停止数据库的正常运行。 2. 检查数据库的完整性,确保没有数据丢失。 3. 根据备份文件恢复数据库到故障之前的状态。可以使用完全备份的文件或者增量备份文件进行恢复。 4. 使用保存在redo日志中的信息,重放未提交的事务。这样可以确保数据库中的数据与故障之前的保持一致。 通过以上步骤,数据库redo容灾恢复可以实现数据的恢复和保护。同时,为了提高系统的可靠性和容灾性能,还可以采取双机容灾、分布式数据库、数据复制等措施,以避免单点故障和数据丢失的风险。 总之,数据库redo容灾恢复是通过保存和应用redo日志来实现数据的恢复和容灾保护。通过备份文件和redo日志,可以快速恢复数据库的状态,避免数据丢失和故障造成的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值