MOT介绍

MOT即Memory-Optimized Table,是openGauss数据库最先进的生产级特性(Beta版本),它为事务性工作负载提供更高的性能。
MOT在高性能(查询和事务延迟)、高可扩展性(吞吐量和并发量)以及高资源利用率(某些程度上节约成本)方面拥有显著优势。

企业可以在关键任务、性能敏感的在线事务处理OLTP中使用MOT,以实现高性能、高吞吐、可预测低延迟以及多核服务器的高利用率

MOT的关键技术如下:

  • 免锁事务管理:MOT在保证严格一致性和数据完整性的前提下,采用乐观的策略实现高并发和高吞吐
  • 免锁索引:由于内存表的数据和索引完全存储在内存中,MOT索引机制基于最先进的Masstree,这是一种用于多核系统的快速和可扩展的键值(Key Value,KV)存储索引,以B+树的Trie实现
  • NUMA-aware的内存管理:MOT内存访问的设计支持非统一内存访问(NUMA)感知
  • 高效持久性:日志和检查点是实现磁盘持久化的关键能力,也是ACID的关键要求之一(D代表持久性)
  • 高SQL覆盖率和功能集:MOT通过扩展的PostgreSQL外部数据封装(FDW)以及索引,几乎支持完整的SQL范围,包括存储过程、用户定义函数和系统函数调用
  • 使用PREPARE语句的查询原生编译:通过使用PREPARE客户端命令,可以以交互方式执行查询和事务语句。
  • MOT和openGauss数据库的无缝集成:MOT是一个高性能的面向内存优化的存储引擎,已集成在openGauss包中。

如下图所示,openGauss数据库内存优化存储引擎组件(绿色部分)负责管理MOT和事务。
详见介绍参见:MOT简介

MOT 实践

授权权限及关闭增量检查点

  • MOT通过外部数据封装器(Foreign Data Wrapper,FDW)机制与openGauss数据库集成,所以需要授权用户权限。
  • 如果postgresql.conf中开启了增量检查点,则无法创建MOT。因此请在创建MOT前将enable_incremental_checkpoint设置为off。
-- select * from pg_foreign_server ;
-- select usename,usesysid from pg_user;
#授权权限
GRANT USAGE ON FOREIGN SERVER mot_server TO test;
#查看配置
show enable_incremental_checkpoint;
#修改配置,修改后需要重启数据库
alter system set enable_incremental_checkpoint='off';

创建表

参照TPC-C基准中的ORDER表创建MOT表,MOT表的定义详见下图

create foreign table mot_order ( o_id         integer      not null, o_d_id       integer      not null, o_w_id       integer      not null, o_c_id       integer not null,o_entry_d    timestamp, o_carrier_id integer,          o_ol_cnt     integer, o_all_local  integer, primary key (o_w_id, o_d_id, o_id)
);

字 段 名 称 字 段 定 义 注 释
O_ID 10,000,000 unique IDs
O_D_ID 20 unique IDs
O_W_ID 2*W unique IDs
O_C_ID 96,000 unique IDs
O_ENTRY_D date and time 制单时间
O_CARRIER_ID 10 unique IDs, or null 货运代号
O_OL_CNT from 5 to 15 分录数
O_ALL_LOCAL numeric, 1 digit 是否全部本地供货

产生模拟数据

insert into mot_order
select number, (number % 20) + 1,ceil(random()*20000+1),ceil(random()*96000+1),'2020-12-02 00:00:00'::timestamp + number * interval '1 second',(number % 10),(number % 10)+5, ceil(random()*2) FROM generate_series(1,200000) as number;

查询

explain select * from mot_order where o_w_id=2 limit 4;
select * from mot_order where o_w_id=2 limit 4;
#SQL优化做得好,能根据索引调整条件的顺序
explain select * from mot_order where o_d_id=1 and o_w_id=2  limit 4;


数据库重启

gs_om -t restart

MOT恢复是随着openGauss数据库其余部分的恢复而自动执行的,并且完全集成到openGauss恢复过程(也称为冷启动)。
分为2个阶段:

  • 检查点恢复:必须通过将数据加载到内存行并创建索引,从磁盘上的最新检查点文件恢复数据。
  • WAL重做日志恢复:从检查点恢复中使用检查点后,必须通过重放之后添加到日志中的记录,从WAL重做日志中恢复最近的数据(在检查点中未捕获)。

删除表

drop foreign table mot_order;

国产数据库OpenGauss--内存优化表(MOT)实践相关推荐

  1. 内存优化表MOT管理

    目录 1.MOT持久性 1.1 MOT日志记录:WAL重做日志 1.2 MOT日志类型 1.3 配置日志 1.4 MOT检查点 2.MOT恢复 3.MOT复制和高可用 4.MOT内存管理 5.MOT ...

  2. OpenGauss的内存优化表MOT

    你所提出的问题,是你认知事物的角度,提出一个问题,即选择了一个理解问题的角度,而一个好的问题(切入角度),对于高效正确的理解事务非常重要.为了提出好的问题,必须先调查学习. 最近在研究OpenGaus ...

  3. SQL Server 2014 内存优化表(1)实现内存优化表

    内存优化表(Memory-Optimized Tables)是SQL Server 2014的新特性,目前仅适用于评估版(Evaluation Edition).开发版(Developer Editi ...

  4. SQLSERVER2014的内存优化表

    SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技术来支持大规模OLTP工作负载. 就算如此, ...

  5. SQL Server 2014内存优化表的使用场景

    最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表还是比较陌生,网上也鲜有内存优化表使用场景的文章 朋 ...

  6. sql语句用变量替换表名_使用内存优化表替换SQL临时表和表变量

    sql语句用变量替换表名 TempDB usage can be considered as a performance bottleneck for workloads that use SQL t ...

  7. SQL Server中的内存优化表变量

    This article will cover the usage details and performance advantages of the memory-optimized table v ...

  8. 行存储索引改换成列存储索引_索引策略–第2部分–内存优化表和列存储索引

    行存储索引改换成列存储索引 In the first part we started discussion about choosing the right table structure and d ...

  9. 「性能优化系列」APP内存优化理论与实践

    当一个应用同时运行越来越多的任务以及复杂的业务,Android系统的内存管理机制已经无法满足内存的释放与回收,为了应用的稳定性与性能,去控制内存的创建和回收就成为了一个重要的命题. 本篇文章主要涉及内 ...

最新文章

  1. GraphPad Prism —— 简单又好用的生物数据统计绘图软件
  2. win7 cmd 操作mysql数据库
  3. 切莫让争执搁浅技术研发
  4. Mac环境下配置Java开发环境(jdk+maven+tomcat+idea)
  5. 【风控场景】互利网上数字金融典型场景: 网络借贷
  6. Linux笔记-给Linux配置DNS
  7. 各种设计模式对比及编程思想总结
  8. 为什么空集是集合的子集_「离散数学」1.41.5特殊的集合和集合的计算
  9. 如何让Win7不再弹出升级Win10的提醒窗口
  10. This iPhone is running iOS 12.2(16E227),which may be supported by this version of Xcode
  11. Lamp兄弟连Linux视频教程
  12. 全网详细接口测试ApiPost详细教程(实战),吐血整理
  13. 用HTML 格式导出Excel 时,如何保留显示网格线 转载
  14. 为什么企业需要CRM系统?CRM的作用及其重要性分析
  15. Android 4.4(KitKat)窗口管理子系统 - 体系框架
  16. 宁银消费金融来了 母行授信80亿,全国急招人
  17. 本地计算机无法设置共享文件夹,共享服务,详细教您win10共享文件夹无法访问怎么办...
  18. 华东师范大学计算机学院和软件学院,华东师大撤销计算机科学与软件工程等学院建制,成立信息学部...
  19. 【i春秋综合渗透训练】我很简单,请不要欺负我
  20. PPT文档播放没声音了怎么办?

热门文章

  1. 中止执行后超过2年_中止两年终结本次执行吗
  2. window下查看TCP端口连接情况:netstat -ano -p tcp|findstr 10001
  3. Unity景深效果解析
  4. 零和博弈(Zero-Sum Games)与非零和博弈(Non-Zero-Sum Games)
  5. 【IoU loss】IoU损失函数理解
  6. 速算24点(C++)
  7. 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)
  8. 你知道map,filter,sort,reduct,every, some 的用法吗?
  9. 解决笔记本连接wifi提示无法连接这个网络问题
  10. 处理机和CPU的区别