GaussDB技术解读——GaussDB架构介绍之数据持久化存取层(DataNode)关键技术方案

news/2025/1/22 8:34:34/文章来源:https://www.cnblogs.com/xiaoxu0211/p/18512140

数据持久化存取层(DataNode)关键技术方案
Datanode节点主要负责数据的持久化和快速写入、读取。数据持久化采用物理日志wal,事务提交wal刷盘, 对外提供逻辑日志功能,反解析物理日志为SQL逻辑日志。

在这里插入图片描述

图1 datanode数据持久化

Astore:存储格式为追加写优化设计,其多版本元组采用新、老版本混合存储方式。当一个更新操作将老版本元组更新为新版本元组之后,如果老版本元组所在页面仍然有空闲空间,则直接在该页面内插入更新后的新版本元组,并在老版本元组中记录指向新版本元组地址的指针。在这个过程中,新版本元组以追加写的方式和被更新的老版本元组混合存放,这样可以减少更新操作的IO开销。然而,需要指出的是,由于新、老版本元组是混合存放的,因此在清理老版本元组时需要从混杂的数据中挑出垃圾数据,清理开销会比较大。同时,由于新版本元组位置相对老版本元组位置发生了变化,而索引中只记录了老版本元组的位置,因此容易导致索引膨胀。为了缓解索引膨胀这个问题,对于同一个页面内的更新,采用了HOT技术,将同一个记录的多个版本按从老至新的更新顺序给串连起来,但是这种从老至新的更新链顺序,对于并发的OLTP类短查询是效率是比较低,需要遍历的版本个数较多。

Ustore:与astore相比,ustore的最大特点在于新、老版本记录的分离存储。当一个更新操作将老版本元组更新为新版本元组之后,直接在老版本元组的位置覆写新版本元组内容,同时,将老版本元组移到统一管理历史版本的undo区域。在这个过程中,既需要修改数据页面,也需要修改undo页面,更新操作开销较astore的追加更新稍大。但是,就如同垃圾分类回收一样,这样带来的好处也是显而易见的,在清理老版本元组时,不再需要遍历扫描主表数据,直接按需回收undo区域即可,垃圾清理开销较astore不仅大幅降低,而且稳定可控。同时,由于新版本元组复用老版本元组的物理位置,因此索引无需更新,索引膨胀得到有效控制。另外,在ustore中,多个版本的更新链按从新至老的顺序串连,对于并发查询更友好。总而言之,ustore更适合更新频繁的业务场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/823604.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GaussDB企业级AI-Native分布式数据库

华为 GaussDB 是一个企业级 AI-Native 分布式数据库。GaussDB 采用 MPP(Massive Parallel Processing)架构,支持行存储与列存储,提供 PB(Petabyte,2 的 50 次方字节)级别数据量的处理能力。 华为Gauss数据库是全球首款AI-Native数据库,能够同时支持X86、ARM、GPU、NPU 等异…

国家代码和国家地区代码有什么区别

​​国家代码和国家地区代码的区别主要体现在:1.定义及用途不同;2.格式和结构差异;3.颁发机构不同;4.应用范围有别;国家代码通常是ISO标准中定义的,如ISO 3166-1中的两位或三位字母代码,而国家地区代码可能包括电话区号、邮政编码等,且格式更为多样。了解这些差异对于处…

CNCC2024:网易伏羲主题分论坛圆满落幕,专家共论推动产学研深度融合

10月26日,为期三天的2024中国计算机大会(CNCC2024)在浙江省东阳市横店镇圆明新园顺利落下帷幕。本届大会以“发展新质生产力,计算引领未来”为主题,吸引了数万名计算领域专业人士参会。本次大会邀请到了17位国内院士,800余位国内外顶尖学者、企业技术精英,通过特邀报告、…

在TMOS系统的不同taskID间交互数据

目录 TMOS系统中,每个taskID下都预留了一个事件编号0x8000,用于在不同的taskID中传递数据。由于0x8000占据了一个事件编号,故每个taskID下,用户只能最多自定义15个事件。 不同的taskID可以用于将不同的功能划分到不同的作用域中,将代码模块化,方便管理和移植。比如说某个…

Swagger UI、RESTful简介

Swagger UI 简介Swagger UI允许任何人(无论您是开发团队还是最终用户)都可以可视化API资源并与之交互,而无需任何实现逻辑。它是根据您的OpenAPI(以前称为Swagger)规范自动生成的,具有可视化文档,可简化后端实现和客户端使用。 SwaggerUI 特点无依赖 UI可以在任何开发环…

Ubuntu QTCreator 程序打包

下载linuxdeployqt官网地址:https://github.com/probonopd/linuxdeployqt/releases安装更改名字 mv linuxdeployqt-6-x86_64.AppImage linuxdeployqtView Code修改权限 chmod 777 linuxdeployqtView Code全局访问 sudo mv linuxdeployqt /usr/local/binView Code测试 linuxdep…

❗Vue中常见的性能优化(被问到要尽可能说全呀cc!!!)

Webpack层级的优化(后面会讲) 前端通用的性能优化,如图片懒加载 使用SSR

算法与数据结构——计数排序

计数排序 计数排序(counting sort)通过统计元素数量来实现排序,通常应用于整数数组。 简单实现 给定一个长度为n的数组nums,其中的元素都是“非负整数”,计数排序的整体流程如下:遍历数组,找出其中最大的数组,记为m,然后创建一个长度为 m+1 的辅助数组counter。 借助c…

二分类结果评估指标

TP(True Positive):真正例,真值和预测值都是正例FP(False Positive):假正例,真值是负例,预测值是正例FN(False Negative):假负例,真值是正例,预测值是负例TN(True Negative):真负例,真值和预测值都是负例Accuracy(准确率):对于给定的测试数据集,分类器正…

GaussDB的行存表与列存表的选择

一、前言 行存表和列存表是数据库中两种常见的数据存储方式。随着信息技术的飞速发展,数据存储和管理以及如何高效地存储和处理大量的数据已经成为了我们的一大挑战。 为了解决这个问题,行存表与列存表应运而生,它们以其独特的优势在各个场景得到了高效的应用。GaussDB支持行…

什么是PlatformIo

PlatformIO是一个开源的物联网开发生态系统,它为多种硬件平台和开发环境提供了一致的、跨平台的开发体验,从而降低开发复杂性、提高开发效率。本文将详细解析PlatformIO的核心组成部分,运行原理以及在实际应用中的作用和优势。PlatformIO提供了统一的项目管理工具,包括项目…

麒麟系统修改镜像地址,并安装数据库mariadb

1.跳转到镜像源文件夹 cd /etc/yum.repos.d 2.备份系统镜像源文件 ps:要养成修改系统文件之前做文件备份的好习惯 cp kylin_aarch64.repo kylin_aarch64.repo.bak 3.修改的镜像源 vi kylin_aarch64.repo[ks10-adv-cdrom] name = Kylin Linux Advanced Server 10 - cdrom baseur…