openGauss新功能:极致RTO回放支持备机读

极致RTO回放是openGauss提供的一种加速备机日志回放的高可用功能,能够做到支撑数据库主机重启后快速恢复,RTO < 10s。极致RTO功能是通过对物理日志回放建立多级流水线,将回放的并发度提高到页面级,来提升日志回放速度的。openGauss在该功能的基础上,进一步演进,在开启极致RTO回放模式的备机上同时支持读功能。从而实现了在提升回放速度的同时,让备机分担业务压力,降低成本。

473585bd0f0d912a6614bc01ccca8b46.jpeg

极致RTO支持备机读主要解决了以下两个难题:

  1. 极致RTO回放模式是按照页面级别的粒度并行回放的,即物理日志会分解成多个不同页面的日志项,分发给多个不同的线程并行去回放,相同页面的日志项回放是串行进行的,不同页面的日志项回放是并行进行的,特别是对于Btree这种通常会生成包含多个页面的物理日志,该机制在明显提升回放效率的同时,也对支持读功能造成了很大的挑战,要能够在不同页面回放进度不一致时保证读数据的一致性;

  2. 由于openGauss内部是采用的MVCC机制(Multi-Version Concurrency Control 多版本并发控制),历史的备机读特性存在较明显的缺陷,当备机回放到涉及到历史版本数据清理或可见性变更等类型的操作时,如果有持有较旧快照的查询还有可能去访问旧版本数据,那么该操作的回放将暂时被阻塞,直到该查询正常结束,或者等待查询超时发送信号取消查询,而无论是回放阻塞还是查询被取消都对业务影响比较明显。

极致RTO备机读功能通过实现数据页面多版本读机制,解决了以上两个问题。在回放过程中,每当某个页面回放若干次后,生成一次历史版本,当查询操作在访问页面时,可以根据持有快照中的信息,选择一个基准版本的页面,再按需回放若干次后,来获得正确的页面版本。因此,即使不同页面的回放进度不一致,也能够获取到正确的历史版本页面从而保证读数据的一致性;并且,对于持有较旧快照的长查询,也不会和回放产生冲突,不会阻塞回放,从而避免了备机读业务对备机回放速度的影响,同时也大大降低了备机上查询被取消的概率。


欢迎大家体验社区最新发布的创新版本openGauss 5.1.0版本:https://opengauss.org/zh/download/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值