openGauss学习笔记-76 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT简介

2023-09-21 20:46:09

openGauss学习笔记-76 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT简介

本节介绍了openGauss内存优化表(Memory-Optimized Table,MOT)的简介。

76 MOT简介

openGauss引入了MOT存储引擎,它是一种事务性行存储,针对多核和大内存服务器进行了优化。MOT是openGauss数据库最先进的生产级特性,它为事务性工作负载提供更高的性能。MOT完全支持ACID特性,并包括严格的持久性和高可用性支持。企业可以在关键任务、性能敏感的在线事务处理(OLTP)中使用MOT,以实现高性能、高吞吐、可预测低延迟以及多核服务器的高利用率。MOT尤其适合在多路和多核处理器的现代服务器上运行,例如基于Arm/鲲鹏处理器的华为TaiShan服务器,以及基于x86的戴尔或类似服务器。

图 1 openGauss内存优化存储引擎

image-20230615213958391

图1所示,openGauss数据库内存优化存储引擎组件(绿色部分)负责管理MOT和事务。

MOT与基于磁盘的普通(堆)表并排创建。MOT的有效设计实现了几乎完全的SQL覆盖,并且支持完整的数据库功能集,如存储过程和自定义函数(限制参见MOT SQL覆盖和限制)。自openGauss 3.1.1版本以来,在单查询(如JOIN)的MOT表和堆表(基于磁盘的普通表)以及多步骤和多表事务中,MOT还支持MVCC和跨引擎事务(Cross-TX)。

通过完全存储在内存中的数据和索引、非统一内存访问感知(NUMA-aware)设计、消除锁和锁存争用的算法以及查询原生编译,MOT可提供更快的数据访问和更高效的事务执行。

MOT有效的几乎无锁的设计和高度调优的实现,使其在多核服务器上实现了卓越的近线性吞吐量扩展,这可能是业界最好的。

MOT完全支持ACID特性:

  • 原子性(Atomicity):原子事务是一系列不可分割的数据库操作。在事务完成(分别提交或中止)之后,这些操作要么全部发生,要么全部不发生。
  • 一致性(Consistency):事务结束后,数据库处于一致状态,保留数据完整性。
  • 隔离性(Isolation):事务之间不能相互干扰。MOT支持可重复读、读已提交和快照隔离级别。更多信息,请参见MOT隔离级别
  • 持久性(Durability):即使发生崩溃和失败,成功完成(提交)的事务效果持久保存。MOT完全集成了openGauss的基于WAL的日志记录。同时支持同步和异步日志记录选项。MOT还支持同步+面向NUMA优化的组提交。更多信息,请参见MOT持久性概念

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

更多推荐

前端提交规范 ESLint + Prettier + husky + lint-staged

如何统一代码风格,规范提交呢?推荐使用前端规范全家桶ESLint+Prettier+husky+lint-staged。eslint(github.com/eslint/esli…)JavaScript代码检测工具,检测并提示错误或警告信息prettier(github.com/prettier/pr…)代码自动化格式

Linux_9_网络协议和管理

目录1网络基础1.1网络概念1.2常见的网络物理组件1.3网络应用程序1.3.1各种网络应用1.3.2应用程序对网络的要求1.4网络的特征1.4.1速度(带宽)1.4.2网络拓扑1.5网络1.5.1网络准和分层1.5.2开放系统互联`OSI`1.5.3网络的通信过程1.5.3.1数据封装和数据解封1.5.3.2协议数据

基于知识蒸馏的两阶段去雨去雪去雾模型学习记录(一)

前面完成了基于知识蒸馏的去雨去雪去雾模型大的部署与训练,下面则进行代码的学习。使用debug的方式进行代码的学习。首先是网络结构展示:轻易不要打开,这个模型太复杂了。说到底倒不是多复杂,就是层数太多了Net((conv_input):ConvLayer((reflection_pad):ReflectionPad2d(

【数据结构】&&【C++】封装红黑树模拟实现map和set容器

【数据结构】&&【C++】封装红黑树模拟实现map和set容器一.红黑树的完成二.改造红黑树(泛型适配)三.封装map和set的接口四.实现红黑树迭代器(泛型适配)五.封装map和set的迭代器六.解决key不能修改问题七.实现map[]运算符重载一.红黑树的完成在上一篇红黑树的模拟实现中,已经将红黑树实现完毕,这里不

C语言每日一题(8):有序序列合并

文章主题:有序序列合并🔥🔥🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄🌊目录前言编程起因项目介绍项目名项目描述输入描述设计思路1.整体逻辑2.具体逻辑代码展示方法一:集中于一数列的冒泡排序法(速度慢,两行数排列顺序可随机

微生物学检验试剂——博迈伦

微生物学检验试剂是用于微生物学实验室中进行微生物检测和分析的特定化学试剂。这些试剂通常用于培养、鉴定和检测微生物,以确定其类型、数量和特性。以下是关于微生物学检验试剂的一些重要信息:1.分类:-培养基:微生物培养基是用于滋养和培育微生物的基础介质。不同类型的微生物需要不同的培养基,如富集培养基、选择培养基、差异培养基等

【网络层】IP协议

文章目录IP协议1.前提认识(1)IP的定位和作用(2)IP地址的构成(3)基本概念2.协议头格式(1)两个核心问题3.网段划分(重要)(1)为什么要网段划分(2)概念(3)子网划分方案(4)模拟子网划分4.特殊的IP地址5.IP地址的数量限制6.私有IP地址和公网IP地址7.路由及路由表(0)感性理解(1)路由(2)

vue学习-07todoList案例与浏览器本地存储

TodoListTodoList(任务列表)是一个简单的Web应用程序示例,用于管理任务、代办事项或清单。Vue.js是一个非常适合构建这种类型应用程序的框架,因为它提供了数据绑定、组件化、响应式和轻松管理用户界面的能力。以下是一个基本的Vue.jsTodoList的示例:任务列表显示:在Vue.js中,你可以使用数据

Databend 开源周报第 111 期

Databend是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn。What'sOnInDatabend探索Databend本周新进展,遇到更贴近你心意的Databend。理解SHAREENDPOINTSHAREENDPOINT

【数据结构】链表的学习和介绍

前言今天,我们来学习,数据结构中的链表链表是什么链表,就是多个结构体变量之间,通过结构体指针连接在一起的一种数据结构提示:本篇文章主要讲解动态链表,对于静态链表不做过多介绍链表的分类链表可分为静态链表和动态链表静态链表只是初步了解,更详细的操作(比如插入节点、删除节点)在这篇文章中不做说明静态链表,实际上就是一个结构体

unity gb28181 rtsp 视频孪生图像拉流和矫正插件(一)

目的是为了视频孪生,将视频放到三维里面,如果使用自己写的插件,有更好的灵活性,同时断线重连等等都更好控制了。1、矫正算法和硬件解码最好使用opencv制作,可以使用opencv的cuda加速,opencv的编译,必须用cudacudnn,都装好,再编译。硬件解码写在插件里面。dll插件使用extern“C”方式。使用_

热文推荐