InnoDB引擎中的redo为何不能处理页断裂的问题?
关注者
20被浏览
4,5073 个回答
姜总书里面应该特地说过redo是物理逻辑结合型的日志。物理到具体的哪个page,页里面是逻辑的。有个考虑就是权衡日志量。既然是逻辑的,那就要根据日志中的条件找到对应的记录。如果页的内部组织结构被破坏了,也就无法找到符合条件的记录了。
幂等主要是每页的元数据信息记录了最新应用的redo lsn。通过判断lsn就可以决定一条redo是否需要再次回放了
因为redo是逻辑日志,只有磁盘上的page是正确的,
才可以基于这个正确的page和redo,恢复出内存中的page
双写机制可以保证磁盘上的page都是正确的(通过双写恢复处理)
PG没有采用双写,而是在每个checkpoint后,page第一次被修改时,将page原值全部写入redo log。这样恢复时,磁盘中page发生断裂时,可以采用redo log中的正确page。
判断一个page是否正确,通过page头的checksum字段。