极致RTO回放备机读
引入多版本读机制:当页面回放导致历史版本数据被覆盖时,日志系统将记录历史版本页面的base page,其余Xlog以LSN链形式持久化存储。读操作根据快照LSN判断应读取最新页面或历史版本页面。极致RTO备机读原理如下图所示。
读线程select backend1执行涉及多个页面的读操作时,在打开relation阶段会获取当前极致RTO快照(如快照125),提取该relation1的base page 100,回放LSN链上的Xlog直至达到读快照LSN阈值,随后依次获取relation2等其他数据页的base page并回放对应LSN链上的Xlog,最终整合历史页面数据完成历史版本读操作。
针对引发物理数据页删除的部分DDL操作,如VACUUM、DROP TABLE、TRUNCATE TABLE、DROP DATABASE,增加延迟删除机制,同时通过系统表MVCC机制与syscache的invalid msg机制协同实现系统表的多版本处理,有效解决查询与回放此类DDL操作的冲突。