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

2023-11-01 14:52

本文主要是介绍openGauss新功能:极致RTO回放支持备机读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

c1b7a6032f70e51c4f901d4bfa7c95df.jpeg

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

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

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

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


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


这篇关于openGauss新功能:极致RTO回放支持备机读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323779

相关文章

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.