首页 > 其他分享 >openGauss MOT关键技术

openGauss MOT关键技术

时间:2024-04-29 16:45:51浏览次数:23  
标签:事务 关键技术 MOT 索引 内存 磁盘 openGauss

MOT关键技术

MOT的关键技术如下:

  • 内存优化数据结构:以实现高并发吞吐量和可预测的低延迟为目标,所有数据和索引都在内存中,不使用中间页缓冲区,并使用持续时间最短的锁。数据结构和所有算法都是专门为内存设计而优化的。

  • 免锁事务管理:MOT在保证严格一致性和数据完整性的前提下,采用乐观的策略实现高并发和高吞吐。在事务过程中,MOT不会对正在更新的数据行的任何版本加锁,从而大大降低了一些大内存系统中的争用。事务中的乐观并发控制(Optimistic Concurrency Control,OCC)语句是在没有锁的情况下实现的,所有的数据修改都是在内存中专门用于私有事务的部分(也称为私有事务内存)中进行的。这就意味着在事务过程中,相关数据在私有事务内存中更新,从而实现了无锁读写;而且只有在提交阶段才会短时间加锁。更多详细信息,请参见MOT并发控制机制

  • 免锁索引:由于内存表的数据和索引完全存储在内存中,因此拥有一个高效的索引数据结构和算法非常重要。MOT索引机制基于最先进的Masstree[对比:磁盘与MOT],这是一种用于多核系统的快速和可扩展的键值(Key Value,KV)存储索引,以B+树的Trie实现。通过这种方式,高并发工作负载在多核服务器上可以获得卓越的性能。同时MOT应用了各种先进的技术以优化性能,如优化锁方法、高速缓存感知和内存预取。

  • NUMA-aware的内存管理:MOT内存访问的设计支持非统一内存访问(NUMA)感知。NUMA-aware算法增强了内存中数据布局的性能,使线程访问物理上连接到线程运行的核心的内存。这是由内存控制器处理的,不需要通过使用互连(如英特尔QPI)进行额外的跳转。MOT的智能内存控制模块,为各种内存对象预先分配了内存池,提高了性能,减少了锁,保证了稳定性。事务的内存对象的分配始终是NUMA本地的。本地处理的对象会返回到池中。同时在事务中尽量减少系统内存分配(OS malloc)的使用,避免不必要的锁。

  • 高效持久性:日志和检查点是实现磁盘持久化的关键能力,也是ACID的关键要求之一(D代表持久性)。目前所有的磁盘(包括SSD和NVMe)都明显慢于内存,因此持久化是基于内存数据库引擎的瓶颈。作为一个基于内存的存储引擎,MOT的持久化设计必须实现各种各样的算法优化,以确保持久化的同时还能达到设计时的速度和吞吐量目标。这些优化包括:

    • 并行日志,所有openGauss磁盘表都支持。
    • 每个事务的日志缓冲和无锁事务准备。
    • 增量更新记录,即只记录变化。
    • 除了同步和异步之外,创新的NUMA感知组提交日志记录。
    • 最先进的数据库检查点(CALC[对比:磁盘与MOT])使内存和计算开销降到最低。
  • 高SQL覆盖率和功能集:MOT通过扩展的PostgreSQL外部数据封装(FDW)以及索引,几乎支持完整的SQL范围,包括存储过程、用户定义函数和系统函数调用。有关不支持的功能的列表,请参阅MOT SQL覆盖和限制

  • 使用PREPARE语句的查询原生编译:通过使用PREPARE客户端命令,可以以交互方式执行查询和事务语句。这些命令已被预编译成原生执行格式,也称为Code-Gen或即时(Just-in-Time,JIT)编译。这样可以实现平均30%的性能提升。在可能的情况下,应用编译和轻量级执行;否则,使用标准执行路径处理适用的查询。Cache Plan模块已针对OLTP进行了优化,在整个会话中甚至使用不同的绑定设置以及在不同的会话中重用编译结果。

  • MOT和openGauss数据库的无缝集成:MOT是一个高性能的面向内存优化的存储引擎,已集成在openGauss包中。MOT的主内存引擎和基于磁盘的存储引擎并存,以支持多种应用场景,同时在内部重用数据库辅助服务,如WAL重做日志、复制、检查点和恢复高可用性等。用户可以从基于磁盘的表和MOT的统一部署、配置和访问中受益。根据特定需求,灵活且低成本地选择使用哪种存储引擎。例如,把会导致瓶颈的高度性能敏感数据放入内存中。

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

标签:事务,关键技术,MOT,索引,内存,磁盘,openGauss
From: https://www.cnblogs.com/techbing/p/18165841

相关文章

  • openGauss MOT复制和高可用
    MOT复制和高可用由于MOT集成到openGauss中,并且使用或支持其复制和高可用,因此,MOT原厂功能即支持同步复制和异步复制。openGaussgs_ctl工具用于可用性控制和openGauss实例操作。这包括gs_ctl切换、gs_ctl故障切换、gs_ctl构建等等。有关更多信息,请参见《工具与命令参考》。配......
  • openGauss MOT高吞吐量
    MOT高吞吐量MOT高吞吐量测试结果如下。Arm/鲲鹏2路128核性能下图是华为Arm/鲲鹏2路128核服务器TPC-C基准测试的结果。一共进行了四类测试:MOT和openGauss基于磁盘的表各进行了2次测试。其中两项测试是在单节点(无高可用性)上执行,这意味着没有向备节点执行复制。其余两个测......
  • openGauss MOT隔离级别
    MOT隔离级别即使MOT完全兼容ACID,openGauss1.0并非支持所有的隔离级别。下表介绍了各隔离级别,以及MOT支持和不支持的内容。表1隔离级别隔离级别说明READUNCOMMITTEDMOT不支持READCOMMITTEDMOT支持READCOMMITTED(读已提交)隔离级别保证任何正在读取的数据在......
  • mORMot 1.18 第10章 连接表
    mORMot1.18第10章连接表如果数据库包含连接表,那么数据库将变得更加有用。假设读者已经知道何时以及为何需要单独的表,以及为何要将它们连接起来——许多关于数据库设计的书籍都详细介绍了这一点。我们不会在这里重复这些信息,甚至不会重复其中的任何子集。我们要介绍的是如何做......
  • openGauss MOT硬件
    MOT硬件本次测试使用的服务器满足10GbE组网和以下配置:基于Arm64/鲲鹏920的2路服务器,型号为TaiShan2280v2(128核),800GBRAM,1TBNVMe盘。操作系统为openEuler。基于Arm64/鲲鹏960的4路服务器,型号为TaiShan2480v2(256核),512GBRAM,1TBNVMe盘。操作系统为openEuler。戴尔x86服务......
  • openGauss MOT样例TPC-C基准
    MOT样例TPC-C基准TPC-C简介TPC-C基准是衡量联机事务处理(OLTP)系统性能的行业标准基准。它基于一个复杂的数据库和许多不同的事务类型。这些事务类型在此基准上执行。TPC-C基准测试既不依赖硬件,也不依赖软件,因此可以在每个测试平台上运行。基准模型的官方概述,见tpc.org网站(http://......
  • openGauss 查看账本历史操作记录
    查看账本历史操作记录前提条件系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。背景信息只有拥有AUDITADMIN属性的用户才可以查看账本历史操作记录。有关数......
  • openGauss 查询原生编译
    查询原生编译MOT的另一个特性是,在预编译的完整查询需要执行之前,能够以原生格式(使用PREPARE语句)准备并解析这些查询。这种原生格式方便后续更有效地执行(使用EXECUTE命令)。这种执行类型速度要快得多,因为原生格式在执行期间绕过多个数据库处理层,从而获得更好地性能。这种分工避免......
  • openGauss 创建表
    创建表背景信息表是建立在数据库中的,在不同的数据库中可以存放相同的表。甚至可以通过使用模式在同一个数据库中创建相同名称的表。创建表前请先规划存储模型。创建表执行如下命令创建表。openGauss=#CREATETABLEcustomer_t1(c_customer_skinteger,......
  • openGauss 查看数据
    查看数据使用系统表pg_tables查询数据库所有表的信息。openGauss=#SELECT*FROMpg_tables;使用gsql的\d+命令查询表的属性。openGauss=#\d+customer_t1;执行如下命令查询表customer_t1的数据量。openGauss=#SELECTcount(*)FROMcustomer_t1;执行如下命......