MOT(1)--概述

引言

完成了对磁盘引擎的部分重点文件,重点技术的分析之后,接下来我将会分析MOT,内存引擎的关键实现,和相关关键技术,为本次大赛之初的队伍目标——打通查询、执行、存储的一整条路径,拼上最后一块拼图。

文件路径:src/gausskernel/storage/mot/

一、框架

open gauss引入的MOT存储引擎,是一种事务性行存储引擎,针对多核和大内存服务器进行优化。MOT完全支持ACID,并提供严格的持久性和高可用性支持。 再次使用存储引擎概述中的图,MOT引擎如下图所示。

MOT引擎和磁盘引擎共用相同的WAL日志,相同的后台流程,在Gauss Db结构中向上均对应查询引擎。但是磁盘引擎所用的的表和索引存储却和内存引擎不同,这将会是我们之后分析的重点。

文件路径:src/gausskernel/storage/mot/

在MOT文件夹下有三个顶层子目录

1.core:涵盖MOT引擎核心模块

并发控制、事务管理、内存管理、存储、检查、重做、恢复等

2.fdw_adapter

包括FDW适配器接口和实现

FDW:

FDW是Foreign Data Wrappers的缩写,它是一种插件,允许在数据库中访问存储在其他异构数据库中。例如,openGauss支持Foreign Data Wrappers for oracle (oracle_fdw),Foreign Data Wrappers for MySQL(mysql_fdw)和Foreign Data Wrappers for PostgreSQL(Postgres_fdw),从而支持在openGauss中访问异构其他数据库。

3.jit_exec 包含MOT JIT组件,一种使用LLVM实现,另一种使用TVM实现

LVMM

在模型优化工具包(MOT)中,jit_exec组件可以使用LLVM或TVM实现:

  • LLVM实现:LLVM(低级虚拟机)是一套模块化且可重用的编译器和工具链技术。它提供了即时(JIT)编译器,可以通过在程序执行期间而非执行前进行编译,大大加速模式匹配的速度。当需要匹配的同一模式多次出现时,这种方法尤其有益。

  • TVM实现:TinyVM是一个小型的虚拟机,目标是具有小的占用空间。它的内存使用量小,代码量少,二进制文件也小。这是一个用纯ANSI C编写的小型、快速、轻量级的虚拟机。另一个例子是L1VM,这是一个具有64位核心的小型虚拟机。这些都是tiny virtual machine的一些例子。

这两种实现都旨在通过在运行时编译和优化模型来优化机器学习模型的执行,这可以带来显著的性能提升。

二、关键技术与特性

MOT的关键技术包括以下几个内容:

  • 1.面向内存优化的数据结构

MOT 技术使用了一系列针对内存的数据结构,如散列表、B+树等,以最大程度地减少内存访问延迟和提高数据访问速度。这些数据结构通常经过优化,以适应内存的快速读写。

  • 2.乐观并发控制

乐观并发控制(Optimistic Concurrency Control,简称OCC)是一种并发控制的方法,主要应用于事务系统,例如关系型数据库管理系统和软件内存事务。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。 乐观并发控制的事务包括以下阶段: 读取:事务将数据读入,这时系统会给事务分派一个时间戳。 校验:事务执行完毕后,进行提交。这时同步校验所有事务,如果事务所读取的数据在读取之后又被其他事务修改,则产生冲突,事务被中断(回滚)。 写入:通过校验阶段后,将更新的数据写入数据库。

  • 3.无锁索引 索引选择Masstree。他是Trie和B+Tree的组合。实现了对缓存、预取和细粒度锁的高效利用它针对锁冲突严重的情况进行了优化,并在其他先进索引的基础上增加了各种优化。Masstree索引的缺点是内存消耗较大,虽然每行数据消耗的内存大小相同,但是每行每个索引(主索引或次索引)的内存平均高出16个字节:在磁盘表使用的基于锁的B树中为29个字节,而MOT的Masstree为45个字节

  • 4.NUMA感知技术,事务性本地内存

NUMA(Non-Uniform Memory Access)是一种计算机架构,其中系统内有多个内存节点,每个节点与一组处理器核心相关联。NUMA 感知技术允许数据库系统意识到这种架构,并优化内存访问以减少远程节点访问的延迟。预先分配了内存池,减少了锁,保证了稳定性。 这对于多核、多节点系统中的数据库性能至关重要。

  • 5.即时编译(JIT技术)

即时编译是一种编程技术,将程序的源代码或字节码编译成本地机器代码,以提高执行速度。在数据库系统中,JIT 技术可以用于编译和优化查询计划,以在运行时执行查询时提供更好的性能。这有助于避免每次查询都需要重新解释的开销

MOT特性

低延迟:提供快速的查询和事务响应

高吞吐量:支持峰值持续并发

高资源利用率:充分利用硬件

高SQL覆盖率和功能集:通过索引和FDW做到几乎全覆盖

高效持久性:日志和检查点实现磁盘持久化

三、模块概述

源码文件功能
concurrency_control并发控制管理
infra辅助与配置函数
memory内存数据管理
storage持久化存储
system全局控制API
utils日志等通用方法

内存引擎框架如下图所示

该图片引用自CSDN对比我们以前分析过的行存储引擎,不难发现,JIT执行器是MOT特有的部分,而又由最初分析MOT与磁盘引擎所用的索引管理不同,所以接下来将会围绕这两点对MOT引擎的源码进行分析。

四、小结

本次对MOT的大体框架进行了学习,并且对比了已经学习过的磁盘引擎(主要是行存储引擎),对于内存引擎的独特之处,JIT,Masstree索引管理将会是笔者后文学习的重点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值