首页 > 其他分享 >GaussDB Ustore存储引擎解读

GaussDB Ustore存储引擎解读

时间:2024-11-02 09:46:51浏览次数:3  
标签:存储 GaussDB 更新 引擎 UNDO Ustore

GaussDB Ustore存储引擎解读

GaussDB是华为云推出的一款高性能数据库产品,其内核新增的Ustore存储引擎为企业级用户提供了更高性能的数据库服务。Ustore存储引擎,又名In-place Update存储引擎(原地更新),是GaussDB内核新增的一种存储模式,旨在解决传统Append Update(追加更新)行存储引擎在特定场景下的性能瓶颈。以下是对GaussDB Ustore存储引擎的详细解读。

一、Ustore存储引擎的背景与优势

在数据库系统中,存储引擎负责数据的存储、检索和管理。不同的存储引擎有不同的设计理念和优化目标,以适应不同的应用场景。传统的Append Update行存储引擎在处理业务中的增、删以及HOT(Heap Only Tuple)Update(即同一页面内更新)时表现良好,但在处理跨数据页面的非HOT UPDATE场景时,垃圾回收效率不够高效,导致存储空间占用问题。

为了解决这个问题,GaussDB推出了Ustore存储引擎。Ustore存储引擎采用原地更新策略,将最新版本的“有效数据”和历史版本的“垃圾数据”分离存储。这种设计不仅提高了数据页面内更新的HOT UPDATE的垃圾回收效率,还有效减少了多次更新元组后存储空间占用的问题。

二、Ustore存储引擎的核心特性
  1. 高效存储与回收

    Ustore存储引擎将最新版本的“有效数据”存储在数据页面上,并单独开辟一段UNDO空间,用于统一管理历史版本的“垃圾数据”。这种设计使得数据空间不会由于频繁更新而膨胀,同时“垃圾数据”集中回收效率更高。

    此外,Ustore存储引擎还采用NUMA-Aware的UNDO子系统设计,使得UNDO子系统可以在多核平台上有效扩展。同时,采用多版本索引技术解决索引清理问题,有效提升了存储空间的回收复用效率。

  2. 高性能与稳定性

    Ustore存储引擎对插入、更新、删除等不同负载的业务,性能以及资源使用表现相对均衡。在频繁更新类的业务场景下,更新操作采用原地更新模式,可以获得更高、更平稳的性能表现。这种设计使得Ustore存储引擎非常适合“短”(事务短)、“频”(更新操作频繁)、“快”(性能要求高)的典型OLTP类业务场景。

  3. 细粒度资源控制

    Ustore引擎提供多维度的事务“监管”方式,可基于事务运行时长、单事务使用UNDO空间大小、以及整体UNDO空间限制等方式对事务运行进行“监管”。这种细粒度资源控制方式可以防止异常、非预期内的行为出现,方便数据库管理员对数据库系统资源使用进行规范和约束。

  4. 丰富的企业级功能

    Ustore存储引擎结合UNDO空间,可以实现更高效、更全面的闪回查询和回收站机制。这种机制能够快速回退人为“误操作”,为GaussDB提供了更丰富的企业级功能。同时,Ustore存储引擎还支持并行创建索引、索引空间管理算法优化等特性,进一步提升了数据库的性能和稳定性。

三、Ustore存储引擎的技术实现
  1. 原地更新策略

    Ustore存储引擎采用原地更新策略,直接在原有位置上进行数据的更新。这种策略减少了存储空间的占用,并且支持更高的并发性能。然而,原地更新可能涉及到数据的移动和重建,特别是在更新操作导致数据大小变化时,可能需要重新分配和调整存储空间。为了解决这个问题,Ustore存储引擎采用了多种优化技术,如UNDO回滚段技术、页面并行回放技术等,以确保数据的完整性和一致性。

  2. UNDO子系统设计

    Ustore存储引擎的UNDO子系统采用NUMA-Aware设计,具有更好的多核扩展性。UNDO空间统一分配、集中回收,复用效率更高。这种设计使得Ustore存储引擎在处理大量并发事务时能够保持较高的性能和稳定性。

  3. 多版本索引技术

    Ustore存储引擎采用多版本索引技术,解决索引清理问题。这种技术使得索引空间能够得到有效利用和回收,进一步提升了存储空间的回收复用效率。同时,多版本索引技术还支持更高效的并发访问和查询性能。

  4. 闪回查询与回收站机制

    Ustore存储引擎结合UNDO空间实现了更高效、更全面的闪回查询和回收站机制。这种机制能够快速回退人为“误操作”,为数据库管理员提供了更丰富的数据恢复和容错手段。同时,闪回查询和回收站机制还支持分区表等高级特性,进一步提升了数据库的可用性和灵活性。

四、Ustore存储引擎的应用场景与优势

Ustore存储引擎适用于需要频繁更新和随机访问的场景,如金融核心业务场景、电商交易场景等。在这些场景中,数据库需要处理大量的并发事务和更新操作,对性能和稳定性有较高要求。Ustore存储引擎通过原地更新策略、UNDO子系统设计、多版本索引技术等特性,为这些场景提供了高效、稳定、可靠的数据库服务。

与传统的Append Update行存储引擎相比,Ustore存储引擎具有以下优势:

  • 更高的性能和稳定性:通过原地更新策略和多版本索引技术,提高了数据更新和查询的效率,降低了存储空间的占用。
  • 更丰富的企业级功能:通过UNDO空间和闪回查询机制,提供了更丰富的数据恢复和容错手段。
  • 更好的多核扩展性:通过NUMA-Aware的UNDO子系统设计,支持在多核平台上有效扩展,提高了数据库的并发处理能力。
五、总结与展望

GaussDB Ustore存储引擎是华为云推出的一款高性能数据库存储引擎,旨在解决传统行存储引擎在特定场景下的性能瓶颈。通过原地更新策略、UNDO子系统设计、多版本索引技术等特性,Ustore存储引擎为需要频繁更新和随机访问的场景提供了高效、稳定、可靠的数据库服务。

未来,随着技术的不断发展,GaussDB将继续结合AI自治技术等先进技术,对Ustore存储引擎进行更智能、更安全、更高效的技术优化。同时,GaussDB也将不断推出新的特性和功能,以满足不同应用场景的需求,为企业数字化转型注入新的动力。

综上所述,GaussDB Ustore存储引擎是一款具有高性能、高稳定性、丰富企业级功能的数据库存储引擎,适用于需要频繁更新和随机访问的场景。通过不断优化和创新,GaussDB将继续为企业提供更加优质、高效的数据库服务。

标签:存储,GaussDB,更新,引擎,UNDO,Ustore
From: https://blog.csdn.net/shiming8879/article/details/143446525

相关文章

  • 链栈存储学生信息三级引用
    链栈,自己实现一遍,但是节点存储不是整数,存储学生信息(年龄,分数,姓名)三级引用。1、建立学生信息结构体,将data改为学生信息结构体类型。2、循环入栈和出栈。#include<myhead.h>typedefstructstudent{ intage; floatscore; charname[20];}stu;typedefstructnode{......
  • 存储服务nfs
    1.概述存储:用于存放用户上传的内容(数据),一般应用在网站集群中.为何用?如果不使用存储,用户上传的数据就直接存放在网站服务器上了,用户下次访问就可能找不到.如果使用存储,用户上传的内容存放在存储上面,用户访问就会访问存储.位置:网站后排.2.存储选型⭐⭐⭐......
  • juicefs元数据存储方式
    环境文件系统使用juicefs,元数据存储使用postgresql,数据存储使用minio问题?通过juicefs写入一个文件,元数据在postgresql中是如何存储的?数据在minio中又是如何存储的?使用docker部署完测试环境后,新建file1、dir1/file1、dir1/file2三个文件在postgresql中jfs_chunk表中记录着文......
  • 数据库中对SQL存储过程的学习
    MySQL存储过程目录MySQL存储过程什么是存储过程存储过程操作创建存储过程调用存储过程删除存储过程查看存储过程存储过程的优缺点什么是存储过程MySQL存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给......
  • Prometheus03 Prometheus服务发现, 各种exporter, 容器化监控, Federation联邦, Victo
    6服务发现6.1服务发现原理6.2文件服务发现#准备主机节点列表文件,可以支持yaml格式和json格式#注意:此文件不建议就地编写生成,可能出现加载一部分的情况cattargets/prometheus*.yaml-targets:-master1:9100labels:app:prometheus#修改prometheus配置......
  • mcu程序中的存储模块
    硬件知识基于成本与需求的考虑,铁电已经很少使用,最常用的是eeprom与flasheeprom相对于flash的优势是寿命长(100万次1万次),且可以按字节操作所以一般嵌入式系统中eeprom存储运行时参数(掉电需保存的参数或者频繁需要修改的数据),flash存储写次数较少但数据量较大的数据(日志......
  • Python数据分析NumPy和pandas(十六、文本格式数据的读取与存储:csv、json、xml和html)
    一、分段读取文本文件在处理非常大的文件时,未找到合适的数据处理方法前,我们一般希望只读取文件的一小部分或遍历文件的较小块来做预处理或参考。这种情况可以采用分段读取文本文件的方式。我们加载一个10000行的ex6.csv文件,其内容如下:一般情况下,对于pandas读取大文件数据时......
  • Docker:存储原理
    Docker:存储原理镜像联合文件系统overlay镜像存储结构容器存储结构存储卷绑定挂载存储卷结构镜像联合文件系统联合文件系统UnionFileSystem是一种分层,轻量且高效的文件系统。其将整个文件系统分为多个层,层与层之间进行覆盖,并对外表现为一个一致的文件系统。......
  • Docker:存储卷
    Docker:存储卷存储卷命令dockervolumelsdockervolumecreatedockervolumeinspectdockervolumermdockervolumeprune分类数据卷绑定卷临时卷存储卷在Docker中,容器的文件存储结构如下:容器时基于镜像产生的,一个镜像可以实例化出多个容器,为了节省镜像的存储......
  • MySQL存储引擎——针对实习面试
    目录MySQL支持哪些存储引擎?MySQL存储引擎架构了解嘛?MyISAM和InnoDB有什么区别?MyISAM和InnoDB如何选择?如何查看表的存储引擎?如何修改表的存储引擎?MySQL支持哪些存储引擎?MySQL支持多种存储引擎,包括InnoDB、MyISAM、MEMORY、ARCHIVE、BLACKHOLE、FEDERATED、NDBCluste......