跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)

文摘   2024-12-04 06:00   天津  

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2600人左右 1 + 2 + 3 + 4 +5 + 6 + 7)(1 2 3 4 5 6群均已爆满,新人进7群,8群, 准备开9群)


4 独立和分布式集成SQL引擎

OceanBase执行引擎必须根据适应性、针对的情况去优化预期来处理多种情况。在更高层次上,每个SQL执行有两种模式:串行执行或并行执行。

图7说明了独立和分布式自适应执行引擎,串行执行包括本地执行、远程执行和分布式执行。对于并行执行,有并行查询和DML操作来提高性能。详细描述如下。

4.1 串行执行、单机内并行和分布式并行

在串行执行期间,如果访问的数据在本地机器上,则远程处理与本地或独立SQL的处理之间没有区别。对于另一个节点上的数据操作,有两种访问方式:远程数据获取或远程执行。 在前者中,数据被拉到本地机器,而在后者中,事务处理和存储访问被转发到另一个节点,整个事务被返回。如果单个SQL访问多个节点的数据,则可以将计算推送到每个节点,以实现串行执行的效果,同时在单机情况下最小化开销,这也允许分布式执行能力,支持并行查询,可以是本地或分布式的,并支持并行DML写操作。

      串行执行计划是小型企业处理数据而无需进行上下文切换或远程数据访问的有效方法。然而,如果需要访问大量数据,将并行功能引入独立的OceanBase可以提高SQL处理能力和响应速度。虽然一些开源独立数据库可能不支持此功能,但可以使用多核服务器来增加并行性。分布式执行计划可以用来进一步增加数据处理的规模,从而允许在多台机器上并行,并有可能超过单机CPU的限制,达到数千个内核。

串行执行有两种执行模式:直接访问存储(DAS)执行和分布式执行。

       DAS访问执行的一种方法是拉取数据。如果数据位于远程,并且是简单的OLTP查询或索引访问回表查询,这样操作消耗最少的资源。我们将把数据和它的执行一起拉到本地。计划和本地执行计划之间没有形式上的区别,并且此操作将在执行器中自动执行。然而,推算比拉取数据更可取,因此我们也支持分布式执行。这种分布式执行不会增加额外的资源消耗。我们将确保它的并行性和之前的DAS执行是相同的。

      对于某些特定的查询或大规模扫描,我们将动态地、自适应地选择其一,这里根据性能成本。OceanBase利用执行引擎来促进混合事务分析处理(HTAP)工作负载。对于传统的在线事务处理(OLTP),OceanBase采用基于拉取的数据访问方法和自下而上的计算执行方法,用于传统的在线分析处理(OLAP)。

      并行执行框架可以自适应地处理单机内的并行性和分布式并行性,因为它们具有相同的框架。所有并行处理工作者可以在机器上形成多个线程或在多个节点上形成线程。我们在分布式执行框架中有一层自适应数据传输层。对于单机内的并行性,传输层会自动将线程之间的数据交互转换为内存拷贝。因此,两种不同的场景被数据传输层完全抽象化,并行执行引擎在单机并行性和分布式并行性的调度层实现上没有区别。

5 独立和分布式集成事务处理引擎

     由于在事务处理中实现可扩展性更困难,我们考虑了在事务处理期间同时考虑独立和分布式的原因。此外,我们提出并实现了一种名为LCL(锁链长度)的完全分布式死锁检测和解决算法,该算法具有动态可扩展性,并应用于OceanBase Paetica。

5.1 传统2PC vs. OceanBase 2PC

图8是传统分布式事务处理过程,分为事务的打开阶段和事务的提交阶段,图9对应OceanBase的事务处理过程。以前的工作试图减少2PC和同步复制的开销。OceanBase事务提交协议提出了一种新的方法,称为参与者和协调者的两阶段提交协议。

与图8中的传统2PC相比,图9中的OceanBase 2PC从事务提交到成功提交,消息处理和日志量明显少于传统2PC,这使其在延迟方面具有很大优势。这种优势还将支持OceanBase在分布式场景中的事务处理能力,这与其他几种分布式数据库的高开销不同。

有两种访问GTS的场景:

1)获取语句快照;

2)获取事务提交版本号。

对于独立事务,

1)无需访问GTS,这已经在OceanBase 4.0中进行了优化。

2)事务提交版本号将获取GTS以满足外部一致性,但这种获取只是接口调用,不会实际发送RPC,因此效率相对较高。

看了几遍后的总结(回来还的找OB专家把这块在弄明白)

传统 2PC 与 OceanBase 2PC 的比较

传统两阶段提交 (2PC) 协议和 OceanBase 的 2PC 协议都用于分布式事务处理,但 OceanBase 对传统 2PC 进行了优化,以减少消息处理和日志量,从而降低延迟。

传统 2PC


图 8 展示了传统的分布式事务处理流程:

它分为事务的开启阶段和提交阶段。

在开启阶段,协调器向所有参与者发送“开始事务”请求,并获取全局事务 ID。

在提交阶段,协调器首先向所有参与者发送“准备”请求。

参与者收到请求后,执行事务操作,并将结果写入本地日志,然后向协调器回复“准备响应”。

如果所有参与者都回复“准备成功”,协调器向所有参与者发送“提交”请求。

参与者收到请求后,提交事务,并向协调器回复“提交响应”。

协调器收到所有参与者的“提交成功”响应后,完成事务提交。


传统 2PC 的问题在于,从事务提交到成功提交的过程中,需要进行多次消息传递和日志写入,这会导致较高的延迟。

OceanBase 2PC


图 9 展示了 OceanBase 的事务处理流程:

OceanBase 的 2PC 协议对传统 2PC 进行了优化,以减少消息处理和日志量,从而降低延迟。

OceanBase 的 2PC 协议引入了全局版本号管理器 (GTS),用于分配全局唯一的版本号。

在事务开启阶段,协调器不再需要获取全局事务 ID,而是直接向参与者发送“开始事务”请求。

在提交阶段,协调器向 GTS 获取一个全局版本号,并将该版本号和“准备”请求一起发送给所有参与者。

参与者收到请求后,执行事务操作,并将结果和全局版本号一起写入本地日志,然后向协调器回复“准备响应”。

如果所有参与者都回复“准备成功”,协调器向所有参与者发送“提交”请求。

参与者收到请求后,将事务提交到全局版本号对应的状态,并向协调器回复“提交响应”。

协调器收到所有参与者的“提交成功”响应后,完成事务提交。


OceanBase 2PC 的优化主要体现在以下两个方面:

减少了消息传递次数: 在事务开启阶段,OceanBase 2PC 不再需要获取全局事务 ID,因此减少了一次消息传递。

减少了日志写入量: 在提交阶段,OceanBase 2PC 将全局版本号和“准备”请求一起发送给参与者,参与者只需要将全局版本号写入本地日志,因此减少了日志写入量。

总结

OceanBase 的 2PC 协议通过减少消息传递次数和日志写入量,有效降低了分布式事务处理的延迟,使其在分布式场景下更具优势。


5.2 日志流和版本号管理器

如果单个事务只涉及单个日志流,一般来说,如果业务数据的量在负载均衡的可容忍粒度内,日志流不需要特别大。在独立部署模式下,通常只有一个日志流,日志流中的任何事务都不需要经过两阶段提交。

OceanBase使用事务版本号来标识已提交事务的顺序,并确定快照隔离级别下多版本数据的可见性。OceanBase的事务版本号同时考虑了独立和分布式性能。在分布式场景中,它通过全局时间戳服务获取事务版本号。在独立部署场景中,全局时间戳服务和事务上下文必须在一个节点上。可以配置为使用本地时间戳服务获取事务版本号,并通过函数调用获取版本号,从而避免RPC引起的上下文切换开销。

分布式数据库系统中的事务不是相互独立的,它们可能涉及单个或多个日志流的同步。在OceanBase中,我们开发了一种针对单日志流事务的优化,使事务能够获取本地版本号,而不会影响全局一致性。如果所有事务和工作负载都不涉及分布式事务,则整个事务处理过程类似于独立数据库中的相同过程。

6 性能评估

在评估中,我们使用不同的数据库系统和配置进行实验。

6.1 实验配置

我们在性能评估中使用了以下数据库:OceanBase 3.1、OceanBase 4.0、MySQL 8.0、Greenplum 6.22.1 和 RDS MySQL 8.0。首先,§6.2、§6.3 和 §6.4 中的单节点实验是在双路 Intel Xeon Platinum 8163 CPU @ 2.50 GHz 服务器上执行的。其次,§6.5 和 §6.6 中的单节点实验是在 32 核 Intel(R) Xeon(R) Platinum 8396B CPU、128GB DRAM 和三个 500GB ESSD PL1 上执行的。第三,§6.7 中的单节点实验分别在阿里云的 ecs.r6.xlarge、ecs.r6.2xlarge、ecs.r6.4xlarge 和 ecs.r6.8xlarge 实例上执行。

6.2 独立性能可扩展性

以下实验,如图10所示,在双路 Intel Xeon Platinum 8163 CPU @ 2.50 GHz 服务器上运行。 Sysbench数据集为1,000,000,压力测试为1,500并发,30个表。OceanBase通过硬件性能的提升,从4核扩展到64核,可以在64核的范围内实现基本的线性扩展,从9×104、1.8×105、3.7×105、6.9×105、1.2×106。


在点选和只读场景中,当服务器CPU核心数等于或小于32 vCPU时,CPU核心数增加一倍,性能相应增加一倍。然而,当服务器的CPU核心数超过32 vCPU时,由于缺乏物理核心,性能不再线性增长。此外,从32 vCPU升级到64 vCPU,这两个场景的性能提升了50%。在插入、更新和仅写的三种纯写场景中,当服务器的CPU核心数低于32 vCPU时,CPU核心数增加一倍,性能大约增加1.2倍,从而表现出完全的线性关系。相反,当服务器的CPU核心数超过32 vCPU时,性能变化类似于读取场景,不再显示线性增长。因此,我们观察到OceanBase可以提供线性扩展。

6.3 高并发低延迟OLTP

最初,一个独立数据库或集中式数据库可以用一台机器支持一个业务。随着分布式数据库的引入,可扩展性变得非常好。如果我们打算在基于三副本的分布式数据库系统中支持相同数量的并发,我们可能需要使用三个节点共同提供服务,以达到单机相同的性能和效率。图11说明了高并发低延迟OLTP场景。


显然,这不是用户想要的分布式数据库。关键问题在于性能方面,我们不仅要关注吞吐量的增加以及从应用程序的角度可以处理的单个SQL或单个事务的速度。虽然我们知道延迟随着分布式事务比例的增加而增加,但从单个事务处理部分的角度来看,

有两个关键点需要满足:

1)即使完全由分布式事务组成,延迟也需要足够低;

2)当没有太多分布式事务时,系统不应该产生额外的延迟。

在分布式环境中,对独立粒度事务和SQL的SQL、存储和事务层的优化也是优先考虑的。在这些组件独立分层后,用户被剥夺了相当大的控制权。因此,提供方法来减少RPC请求的数量,通过将数据放置在一个节点上是有益的。重要的是,用户和DBA对极端性能要求具有控制能力。

OceanBase利用C++提供的控制能力,可以精确地管理内存并降低延迟。此外,为操作人员提供分区数据的能力也是必不可少的,因为表组允许用户避免分布式事务的开销。表组不是物理对象,而是一个代表一组或一组表的逻辑概念。属于该组的表必须满足某些约束。所有表必须具有相同的本地性(包括副本类型、数量和位置)、主区域(领导者位置和优先级)和相同的分区方法。

请注意对比数据OB 4 vs OB 3



总结:
在分布式事务的处理的部分,还需要多关注4.0的优化方法。这里我耗费的一些时间来去处理,大约花了2个小时,但还需要深入。
1  4.0 的OB 修改的是原理性的一些部分
2  4.0 在单机部署或者较少的主机节点部署后,相对与3.X性能提高显著
3  4.0 对于OB 和对于中小企业用户是友好的。
4  CPU 数据量在32核心的以内和32核心--64核心都能线性的提高数据的处理能力,但如果可以超过32核心的单机节点更有利于分布式和分布式并行的性能。

OceanBase 相关文章


跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)

跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)

跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)

聚焦SaaS类企业数据库选型(技术、成本、合规、地缘政治)

OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
OceanBase  学习记录 -- 安装简易环境
OceanBase  学习记录 --  开始入门
数据库最近第一比较多,OceanBase 定语加多了?
临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
数据库信息速递  阿里巴巴的分布式数据库OceanBase旨在进军中国以外的市场 (翻译)
PolarDB 相关文章


PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人

PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)

PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)

PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless

POLARDB  从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS

PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈

PolarDB 从节点Down机后,引起的主从节点强一致的争论

PolarDB serverless 真敢搞,你出圈了你知道吗!!!!

PolarDB VS PostgreSQL  "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?

临时工访谈:PolarDB  Serverless  发现“大”问题了  之 灭妖记 续集

临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一

PolarDB for PostgreSQL  有意思吗?有意思呀
PolarDB  Serverless POC测试中有没有坑与发现的疑问
临时工说:从人性的角度来分析为什么公司内MySQL 成为少数派,PolarDB 占领高处
POLARDB  到底打倒了谁  PPT 分享 (文字版)

POLARDB  -- Ausitndatabases 历年的文章集合

PolarDB for PostgreSQL  有意思吗?有意思呀

PolarDB  搞那么多复杂磁盘计费的东西,抽筋了吗?


PostgreSQL 相关文章


全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁

PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!

病毒攻击PostgreSQL暴力破解系统,防范加固系统方案(内附分析日志脚本)
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜

PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆

PostgreSQL 如何通过工具来分析PG 内存泄露

PostgreSQL  分组查询可以不进行全表扫描吗?速度提高上千倍?

POSTGRESQL --Austindatabaes 历年文章整理

PostgreSQL  查询语句开发写不好是必然,不是PG的锅

PostgreSQL  字符集乌龙导致数据查询排序的问题,与 MySQL 稳定 "PG不稳定"
PostgreSQL  Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)
PostgreSQL   玩PG我们是认真的,vacuum 稳定性平台我们有了
PostgreSQL DBA硬扛 垃圾 “开发”,“架构师”,滥用PG 你们滚出 !(附送定期清理连接脚本)

DBA 失职导致 PostgreSQL 日志疯涨


SQL SERVER 系列

SQL SERVER维保AI化,从一段小故事开始
SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗
SQL SERVER 危险中,标题不让发,进入看详情(译)
SQL SERVER 我没有消失,SQL SERVER下一个版本是2025 (功能领先大多数数据库)
SQL SERVER 2022 针对缓存扫描和Query Store 的进步,可以考虑进行版本升级


OceanBase 相关文章


跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)

跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)

跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)

聚焦SaaS类企业数据库选型(技术、成本、合规、地缘政治)

OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
OceanBase  学习记录 -- 安装简易环境
OceanBase  学习记录 --  开始入门
数据库最近第一比较多,OceanBase 定语加多了?
临时工访谈:OceanBase上海开大会,我们四个开小会 OB 国产数据库破局者
临时工说:OceanBase 到访,果然数据库的世界很卷,没边
数据库信息速递  阿里巴巴的分布式数据库OceanBase旨在进军中国以外的市场 (翻译)




MongoDB 相关文章


MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通

MongoDB 年底活动,免费考试名额 7个公众号获得

MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)

数据库 《三体》“二向箔”  思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维

MongoDB  是外星人,水瓶座,怎么和不按套路出牌的他沟通?

17000多张MongoDB表的锅 自动分析删除表数据难题--从头到尾的处理过程(文尾有MongoDB开发规范)
MongoDB 插入更新数据慢,开发问哪的问题?附带解决方案和脚本
MongoDB 不是软柿子,想替换就替换
MongoDB  挑战传统数据库聚合查询,干不死他们的MongoDB 2023纽约 MongoDB 大会 -- 我们怎么做的新一代引擎 SBE Mongodb 7.0双擎力量(译)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB  双机热备那篇文章是  “毒”
MongoDB   会丢数据吗?在次补刀MongoDB  双机热备
MONGODB  ---- Austindatabases  历年文章合集


MySQL相关文章


MySQL timeout 参数可以让事务不完全回滚
"DBA 是个der" 吵出MySQL主键问题多种解决方案

MySQL 让你还用5.7 出事了吧,用着用着5.7崩了

MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
MYSQL  --Austindatabases 历年文章合集

阿里云系列

阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?

阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列

阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列

阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列

阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列



临时工访谈系列

本地存储还有活路吗? 从上周一个供应商问我的问题开始
一年又一年,成了老梆子,别回头,往前看!
临时工说: 实际实例揭穿AI, 上云就不用DBA的谎言
临时工说:DBA 7*24H 给2万的工作,到底去不去?
国内最大IT服务公司-招聘DBA “招聘广告”的变化--分析与探讨
临时工说:  网友问35岁就淘汰,我刚入行DBA 怎么办?

截止今天共发布1262篇文字


AustinDatabases
PostgreSQL ACE ,PolarDB 3年, OceanBase 极速学习ING, MongoDB 8年经验, MySQL OCP, SQL SERVER, MCITP,REDIS ,做一个合格的数据库架构师
 最新文章