如果存在WAL(重做)日志,它将允许我们在不需要先更新数据结构的情况下将记录持久化到磁盘并提交事务。
既然您始终可以从重做日志中重新应用和更新数据结构以应对崩溃或故障,为什么我们还需要撤消日志呢?
我对这个问题的理解是,我们仍然需要撤消日志,因为:
1.如果我们在记录提交并持久化到磁盘之前使用记录更新数据结构,则可能需要在事务回滚时撤消数据结构中的更改。但是,我不明白为什么我们不能等待事务提交后再更新数据结构?这听起来比维护撤消日志更简单。
2.快照隔离。MVCC需要能够访问旧版本的记录的数据结构。使用撤消日志,它可以回到过去。没有撤消记录,就无法提供回溯功能。
我的理解是,即使存在重做日志,我们仍然需要撤消日志吗?
既然您始终可以从重做日志中重新应用和更新数据结构以应对崩溃或故障,为什么我们还需要撤消日志呢?
我对这个问题的理解是,我们仍然需要撤消日志,因为:
1.如果我们在记录提交并持久化到磁盘之前使用记录更新数据结构,则可能需要在事务回滚时撤消数据结构中的更改。但是,我不明白为什么我们不能等待事务提交后再更新数据结构?这听起来比维护撤消日志更简单。
2.快照隔离。MVCC需要能够访问旧版本的记录的数据结构。使用撤消日志,它可以回到过去。没有撤消记录,就无法提供回溯功能。
我的理解是,即使存在重做日志,我们仍然需要撤消日志吗?