国产数据库OpenGauss--内存优化表(MOT)实践
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)实践相关推荐
- 内存优化表MOT管理
目录 1.MOT持久性 1.1 MOT日志记录:WAL重做日志 1.2 MOT日志类型 1.3 配置日志 1.4 MOT检查点 2.MOT恢复 3.MOT复制和高可用 4.MOT内存管理 5.MOT ...
- OpenGauss的内存优化表MOT
你所提出的问题,是你认知事物的角度,提出一个问题,即选择了一个理解问题的角度,而一个好的问题(切入角度),对于高效正确的理解事务非常重要.为了提出好的问题,必须先调查学习. 最近在研究OpenGaus ...
- SQL Server 2014 内存优化表(1)实现内存优化表
内存优化表(Memory-Optimized Tables)是SQL Server 2014的新特性,目前仅适用于评估版(Evaluation Edition).开发版(Developer Editi ...
- SQLSERVER2014的内存优化表
SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技术来支持大规模OLTP工作负载. 就算如此, ...
- SQL Server 2014内存优化表的使用场景
最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表还是比较陌生,网上也鲜有内存优化表使用场景的文章 朋 ...
- sql语句用变量替换表名_使用内存优化表替换SQL临时表和表变量
sql语句用变量替换表名 TempDB usage can be considered as a performance bottleneck for workloads that use SQL t ...
- SQL Server中的内存优化表变量
This article will cover the usage details and performance advantages of the memory-optimized table v ...
- 行存储索引改换成列存储索引_索引策略–第2部分–内存优化表和列存储索引
行存储索引改换成列存储索引 In the first part we started discussion about choosing the right table structure and d ...
- 「性能优化系列」APP内存优化理论与实践
当一个应用同时运行越来越多的任务以及复杂的业务,Android系统的内存管理机制已经无法满足内存的释放与回收,为了应用的稳定性与性能,去控制内存的创建和回收就成为了一个重要的命题. 本篇文章主要涉及内 ...
最新文章
- GraphPad Prism —— 简单又好用的生物数据统计绘图软件
- win7 cmd 操作mysql数据库
- 切莫让争执搁浅技术研发
- Mac环境下配置Java开发环境(jdk+maven+tomcat+idea)
- 【风控场景】互利网上数字金融典型场景: 网络借贷
- Linux笔记-给Linux配置DNS
- 各种设计模式对比及编程思想总结
- 为什么空集是集合的子集_「离散数学」1.41.5特殊的集合和集合的计算
- 如何让Win7不再弹出升级Win10的提醒窗口
- This iPhone is running iOS 12.2(16E227),which may be supported by this version of Xcode
- Lamp兄弟连Linux视频教程
- 全网详细接口测试ApiPost详细教程(实战),吐血整理
- 用HTML 格式导出Excel 时,如何保留显示网格线 转载
- 为什么企业需要CRM系统?CRM的作用及其重要性分析
- Android 4.4(KitKat)窗口管理子系统 - 体系框架
- 宁银消费金融来了 母行授信80亿,全国急招人
- 本地计算机无法设置共享文件夹,共享服务,详细教您win10共享文件夹无法访问怎么办...
- 华东师范大学计算机学院和软件学院,华东师大撤销计算机科学与软件工程等学院建制,成立信息学部...
- 【i春秋综合渗透训练】我很简单,请不要欺负我
- PPT文档播放没声音了怎么办?
热门文章
- 中止执行后超过2年_中止两年终结本次执行吗
- window下查看TCP端口连接情况:netstat -ano -p tcp|findstr 10001
- Unity景深效果解析
- 零和博弈(Zero-Sum Games)与非零和博弈(Non-Zero-Sum Games)
- 【IoU loss】IoU损失函数理解
- 速算24点(C++)
- 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)
- 你知道map,filter,sort,reduct,every, some 的用法吗?
- 解决笔记本连接wifi提示无法连接这个网络问题
- 处理机和CPU的区别