2025年goldendb数据库架构(goldendb底层架构)

goldendb数据库架构(goldendb底层架构)p style text align center img alt src https i blog csdnimg cn direct f8375fef2a8b png p

大家好,我是讯享网,很高兴认识大家。



 <p style="text-align:center;"><img alt="" src="https://i-blog.csdnimg.cn/direct/f8375fef2a8b42228ea39dd.png"></p> 

讯享网

        openGauss行存储引擎采用Ustore原地更新引擎(in-place update)设计,支持 MVCC(Multi- Version Concurrency Control,多版本并发控制),同时支持本地存储和存储与计算分离的部署方式。行存储引擎的特点是支持高并发读写,时延小,适合 OLTP交易类业务场景。

        openGauss的行存储引擎在设计上支持 MVCC,采用集中式垃圾版本回收机制,可以提供 OLTP业务系统的高并发读写要求,支持存储、计算分离架构,存储层异步回放日志。行存储引擎架构如图1所示。

图1 行存储引擎架构

图注:

        数据页面缓存池中缓存数据页面,在数据页面中存放元组以及元组的历史版本并集中管理,使用 Vacuum(垃圾清理)线程进行定期的空间回收。

        行存储引擎的关键技术有:

  1. 基于事务ID以及ctid(行号)的多版本管理。
  2. 基于 CSN(CommitSequenceNumber,待提交事务的序列号,它是一个64位递增无符号数)的多版本可见性判断以及 MVCC机制。页面,在数据页面中存放元组以及元组的历史版本并集中管理,使用Vacuum(垃圾清理)线程进行定期的空间回收。
  3. 基于大内存设计的缓冲区管理。
  4. 平滑无性能波动的增量检查点(checkpoint)。
  5. 基于并行回放的快速故障实例恢复。

        主要模块如图2所示。


讯享网

图2 行存储主要模块

        行存储的元组结构以及页面组织,是行存储 DML实现、可见性判断以及行存储各种功能与管理机制的基石。

        由于行存储是基于磁盘的存储引擎,因此存储格式的设计遵从段页式设计,存储结构需要以页面(page)为单位,方便与操作系统内核以及文件系统的接口进行交互。也是由于这个原因,页面的大小需要和目标系统中一个 block(块)的大小对齐。在比较通用的 Linux内核中,页面大小一般默认为8192字节(8KB)。一个基本的 Heap (堆)页面如图3所示。

图3 Heap页面示意图

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;页面开头的位置为整个页面的头部信息,记录了这个页面的公用信息以及一些关键标识。line_pointer被 放 置 于 Header后 面,并 向 页 面 尾 部 扩 展。line_pointer为 指 向Tuple实际数据的一个指针,类似于行指针(sentinel)的作用。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里需要一提的是,每个 Tuple在系统中的唯一标识ItemPointer,也被称为ctid,


小讯
上一篇 2025-04-18 19:56
下一篇 2025-04-17 11:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/147730.html