OceanBase 4.2.1 LTS 发版 | 一体化数据库首个长期支持版本

在刚刚结束的年度发布会上,OceanBase 沿着“一体化”产品战略思路,发布了一体化数据库的首个长期支持版本 4.2.1 LTS。作为 4.0 系列的第一个 LTS 版本,该版本的定位是支撑客户关键业务稳定长久运行,我们非常认真的打磨了这个版本,目的就是为了让客户可以在关键业务负载中放心地规模化使用。

2023 年初,OceanBase 发布了面向开发者的 4.1 版本,在单机分布式一体化架构的基础上推出了大量新增功能,并且大幅提升了性能和稳定性,获得了开发者的很多好评。4.2.1 LTS 是面向 OLTP 核心场景的全功能里程碑版本,相比上一个 3.2.4 LTS 版本,新版本能力全面提升,适应场景更加丰富,有更全面的容灾解决方案。

经过 4.0.0、4.1.0、4.2.0 等多个版本的迭代打磨,新的一体化版本已经在生产环境支撑了上百个业务系统稳定运行,这些系统既包括私有化部署的环境也包括公有云环境。这些实践案例表明,使用新版本能够简化核心系统迁移的成本,提升系统的运行效率。

4.2.1 LTS 版本相比  3.2.4 LTS 版本在兼容性、性能、容灾能力、易用性等方面有大幅度提升,下文对于这些方面分别介绍其中的一些亮点,欢迎大家上手体验该版本的更多关键能力升级。

图片

(一)Oracle 兼容性

定位于核心系统升级的 4.2.1 LTS 版本,是 Oracle 兼容性的一个里程碑版本,汇集了 OceanBase 在银行、券商、保险、运营商、电力、人社等多个行业实际业务场景中打磨出的各项兼容能力,让更多的业务场景可以利用 4.2.1 LTS 版本进行平滑应用迁移。

1. 复杂查询能力

Oracle 有较强的查询优化和执行性能,面对很多业务场景中复杂的 SQL 能高效的执行,这些是很多核心系统切换过程遇到的挑战。新的一体化版本中优化器能力有了质的提升,有了更多的查询改写能力,提升了多表 JOIN 请求的计划生成性能。执行器也有大幅度的性能提升,允许更多的算子下压操作,还引入了更多的自适应执行能力。TPC-H 和 TPC-DS 场景性能都比 3.2.4 版本有大幅提升。新版本能够大幅减少核心系统迁移遇到的复杂查询的性能挑战。

2. 存储过程

新版本对于存储过程的兼容能力也有大幅度提升,全面兼容了 Oracle 复杂数据类型,支持多维嵌套和完善的多层级联复杂数据类型访问,新增组合触发器和触发器 Order 能力支持,新增了 AnyData、AnyType 数据类型。新版本中,存储过程的编译结果支持了落盘持久化能力,大幅度优化了复杂存储过程重启的重新加载耗时。同时,系统还新增了很多 Oracle 的系统包,如 DBMS_TYPES、DBMS_XMLGEN、DBMS_SYS_ERROR 等。这些能力可以帮助业务场景更平滑地从 Oracle 迁移到 OceanBase。

3. LOB

新版本全面兼容 Oracle 的 LOB 能力,能够支持 TB 级别的 LOB 存储能力。对于 LOB 的操作也支持延迟加载,解决了 LOB 访问对于内存的依赖。4.2.1 版本同样兼容了 Oracle 操作 LOB 类型的 DBMS_LOB 包,用户通过 DBMS_LOB 包可以对 LOB 内容执行插入、更新、删除、读取等操作,更精细地实现业务需求。

4. JSON、XML

JSON 越来越多被用在各种业务中,新版本 Oracle 兼容模式也完善了 JSON 类型的支持,支持 JSON 类型的存储与查询,还支持了 Oracle 关于 JSON 新增的大部分函数如JSON_OBJECT、JSON_EQUAL等,方便在 Oracle 兼容模式中对 JSON 类型进行处理。新版本对于 XML 类型的支持也得到了进一步增强,支持了原生的XML Binary存储,能够加速XML的查询,也支持基于虚拟生成列在XML文档上建立索引。

5. Database Link & XA

相较于 3.2 版本 Database Link 只能支持跨数据库的读操作,新版本以 XA 事务能力为基础,在 Database Link 上支持了跨 OceanBase 和 Oracle 的写事务能力,也支持 OceanBase 到 OceanBase 的写事务能力。更强的 Database Link 功能的支持可以协助实际业务替换数据库过程中做得更平滑,改动更小。

(二)MySQL 兼容性

OceanBase 的 MySQL 兼容模式在之前的版本已经对 MySQL 5.7 有很好兼容能力的基础上,新的 4.2.1 LTS 版本引入了大量 MySQL 8.0 的新功能:

  • 新增多种 SQL mode 的支持,包括 REAL_AS_FLOAT, POSTGRESQL, NO_DIR_IN_CREATE 等 13 个

  • 新增支持十多个函数,包括 BIN_TO_UUID, CURRENT_ROLE, IS_UUID 等

  • 触发器功能中 CREATE TRIGGER 语句支持 PRECEDES/FOLLOWS 子句定义触发顺序

  • 公共表达式功能(CTE)支持 WITH ... UPDATE ... 和 WITH ... DELETE ... 用法

  • 新增函数索引支持

  • 进一步完善 INFORMATION_SCHEMA 的兼容表现

接下来聊聊很多用户都期待的 Binlog Service,很多数据生态产品都支持解析 MySQL Binlog 格式,为了让 OceanBase 更好的融入 MySQL 兼容生态,新版本新增 Binlog Service 能力,可以将 OceanBase 的增量日志转换成 MySQL Binlog 格式,并且全面兼容 Binlog 协议,当用户将 MySQL 替换为 OceanBase 时,可以继续复用 MySQL 的增量日志解析工具。

图片

作为一体化数据库,OceanBase 也在持续提升产品的性能和性价比。不同业务会侧重于不同功能不同场景,对于性能的需求也是多方面,有些业务关注系统的极限性能,有些关注小规格机器的性价比,另一些业务会关注 DDL 的性能,还有的业务关注 AP 场景的性能。OceanBase 4.2.1 LTS 版本在这些方面都有很多性能提升和改进。

(一)TP性能

OceanBase 基于单机分布式一体化架构已经打造了单机能力可以超越单机 MySQL 的系统,新版本在各种规格下性能相比之前的版本均有较多提升,在 96 Core 机器上,sysbench 压测的性能相比 3.2.4 版本提升 9% 到 100%。新版本对于小规格有更大幅度的优化,提升比例从 51% 到 152% 不等,在 read only、insert、update 三种场景的性能都达到了 3.2.4 版本的 2 倍以上。

图片

(二)AP性能

OceanBase 一体化数据库在分析查询场景性能有大幅度提升,在新的 4.2.1 LTS 版本中,计划优化能力、执行能力相比较 3.2.4 LTS 版本均有质的提升,以 TPC-DS 场景为例,其所模拟的决策支持场景有大量的 JOIN 操作,对于优化器和执行器都有非常大的挑战。在新版本上 TPC-DS 100G 性能是 3.2.4 版本的 2.7 倍,性能优化效果更显著。

(三)统计信息

对于分析查询场景,想要生成好的执行计划,必须要有准确的统计信息。在 HTAP 环境中,表格中的数据随着业务的运行也在不停的变化,OceanBase 4.2.1 LTS 新增了多项能力来更好的获取准确的统计信息,最终可以生成更好的执行计划。

在 4.2.1 LTS 版本中,全量的统计信息收集会在每日规定的时间窗口内进行,通过DBMS_SCHEDULER 包进行相关的设置,也可以使用 DBMS_STATS 包立即执行统计信息相关的操作。

在线统计信息收集功能是让表格在突然写入了大量数据的过程中自动维护统计信息,确保及时生成最优的执行计划。新版本中,当用户执行 CREATE TABLE AS SELECT、INSERT INTO SELECT、LOAD DATA 等语句时,在请求执行的过程中,利用原本数据迭代流程,采用增量更新的方式,对统计信息进行更新。在线统计信息收集功能,不仅能够更及时地维护统计信息,而且相比显式调用统计信息收集更轻量、更快速。

优化器动态采样功能能在 SQL 运行时收集需要的统计信息,帮助优化器生成更好的执行计划,优化查询性能。当没有可用的统计信息或者查询条件中存在复杂谓词,比如 "c1 like '%test%' ",无法用选择率计算公式进行行数估计,再加上用户明确指定开启的场景,OceanBase 会在计划生成阶段启用动态采样以获得更准确的统计信息。

(四)DDL

在业务迁移数据的开始阶段,会将业务所有的表格在 OceanBase 系统中创建出来,会有并发的建表语句执行。在汇总、清算等业务场景中,业务会在执行流程中进行 Schema 操作,例如使用 Truncate Table 清空一些计算的中间数据。

最新的 4.2.1 LTS 版本对这些场景有优化。Create Table 语句与 Truncate Table 允许并行执行,在通常的生产环境中,批量并发操作新版本性能相比 3.2.4 LTS 版本有 10 倍以上的性能提升。在优化执行效率的同时,OceanBase 依然保证了严格的并发控制,同一张表的并发Truncate Table 会串行执行,另外,如果表上正在执行修改事务,Truncate Table 语句也会等待事务结束才会执行,确保了 Truncate Table 严格的并发控制行为。

(五)旁路导入

当业务迁移到 OceanBase 时,首先面临的挑战就是把大量的数据迁移到 OceanBase 中,在新版本中,旁路导入功能可以大大加速数据导入的速度,通过让一张表格写入数据的流程绕过 SQL 引擎和事务引擎,直接按照存储引擎的格式生成持久化的数据,在很多场景下可以让导入性能提升 6 倍。旁路导入功能是一个完备的功能,有很多让使用者贴心的使用体验。旁路导入在表级别进行并发控制,正在执行旁路导入的表会与表上的其他修改事务互斥,保证数据的一致性。同一时间其他表上的操作不会受影响。旁路导入功能还适配了备份恢复和物理备库功能,新写入的数据会实时归档,也会同步到备库。所以,旁路导入功能不仅可以用在新业务加载数据的场景,日常的数据操作和运维管理也可以使用。

图片

(一)仲裁服务

仲裁服务是专为OceanBase集群提供活性检测和容灾切换的服务。仲裁服务自身不存储用户数据,与集群内的各台机器之间只有心跳通信,带宽占用极小。

图片

基于仲裁服务的两地三中心高可用部署方案在主城市的两中心各放置两副本,在灾备城市放置仲裁服务。集群正常工作时,主城市的四副本依然以 Paxos 一致性协议为基础进行事务日志的高可用同步,四副本的多数派为三,集群中一台机器出现故障时,不会影响集群的正常服务。仲裁服务会实时维护与主城市四副本之间的活性检测,当主城市任一中心故障时,会出现两台机器故障,仲裁服务会介入管理让另一个状态正常的中心恢复数据库的服务。基于仲裁的高可用方案在大幅度减少对于跨城网络带宽的依赖同时,依然保证了在主城市单个中心故障时服务连续性和数据可靠性,是理想的两地三中心的数据库部署方案。

同时,为了异地灾备,OceanBase 使用备集群异步同步主集群的所有数据变更。备集群对于跨城带宽的使用是弱依赖,当跨城同步的日志量超过跨城带宽时,会出现备集群同步落后的现象,不会影响主集群的服务,为业务提供更好的服务连续性。在业务高峰期过后,备集群能够利用主集群归档的日志继续日志同步,在业务低峰期将数据库的状态追赶上主集群,简化数据库的运维操作。

(二)故障恢复时间 RTO < 8 秒

OceanBase 一直以稳定可靠的容灾能力为业务的连续性提供保障,在新版本中,机器宕机时数据库的恢复时间小于 8 秒的能力,即 RTO < 8 秒。

在数据库的实际运行环境中,出现的异常情况不仅是机器宕机,还会出现网络中断、IO 异常甚至是数据库进程被中断等。另外,出现异常的也不一定是数据库机器,还有可能是路由层 OBProxy 所在服务器。异常情况的处理不仅要考虑通常 TP 业务的并发事务执行场景,也要考虑执行 DDL、数据加载等运维场景。

新版本中,我们继续完善了故障恢复能力,以用户实际遇到的多种类的异常问题作为优化目标,打磨每个模块处理异常的细节,让上述提到的各种异常情况发生时,数据库的服务都能在 8 秒内恢复,给业务提供更强的持续可用能力。

(三)租户级别物理备库

之前版本的 OceanBase 物理备库功能是集群级别的,同一个集群所有的租户必须同时是主库状态或者同时是备库状态。但是,使用 OceanBase 的用户会使用不同的租户来承载不同的业务,容灾的需求也就会以租户粒度有区别。新版本提供租户级别物理备库功能,让备库功能做到租户粒度,允许同一个集群中同时存在主库角色的租户和备库角色的租户,也就允许两个集群的不同租户互为主备,例如,A租户的主库在集群 1、备库在集群 2,B 租户的主库在集群 2、备库在集群 1。通过更加灵活的方式,可以方便用户安排更符合实际业务的容灾部署方案。

同时,新的物理备库方案在内核层面做了全新设计,解除了对于集群运行状态的依赖,备库同步只依赖归档存储中的日志即可,即使主库不存在了,也可以基于备份数据和归档日志搭建出备库,所以,只要归档日志还在,用户也不用担心主库日志回收导致的备库同步的断流风险。

图片

(一)Auto DOP(自动选择请求执行并行度)

并行度(DOP:Degree of Parallel)用于描述请求执行时可以使用的并行资源量,是决定并行执行速度的关键参数。之前的版本需要用户在请求、Session 或表格维度指定并行度,虽然可以根据业务需求精确指定,但是却比较繁琐。为了解决手动指定并行度的不便和限制,新版本查询优化器可以在生成查询计划时评估查询需要执行的时间,自动确定是否开启并行和开启适量的并行度。这样可以避免由于手动指定并行度而导致的性能下降。

(二)外表

外表功能可以访问数据库外部的文件,直接映射成数据库内的表格进行访问并读取文件中的数据。相比较于把外部数据导入数据库后再进行分析处理,外部表直接读取外部数据文件,既方便又快速。在新版本中,OceanBase 支持文件系统的文件或 OSS 上的对象作为外表的源,支持以 CSV 格式解析外表数据。

图片

OceanBase 4.2.1 LTS 是过去的 2 年半时间,与数百位用户一起认真打磨的关键里程碑版本,得益于大量用户真实场景的使用反馈,为关键业务负载打造的一体化数据库,希望与每一个客户携手同行,共同攻坚关键业务负载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/169159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

2、问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 n int(input()) a list(map(int,input().split())) a.sort() for i in a:print(i,end ) 运行结果&#xff1a;

AIGC 技术在淘淘秀场景的探索与实践

本文介绍了AIGC相关领域的爆发式增长&#xff0c;并探讨了淘宝秀秀(AI买家秀)的设计思路和技术方案。文章涵盖了图像生成、仿真形象生成和换背景方案&#xff0c;以及模型流程串联等关键技术。 文章还介绍了淘淘秀的使用流程和遇到的问题及处理方法。最后&#xff0c;文章展望…

云桌面 node_modules 切换艰辛历程记录 rebuild失败记录

拿到node_modules后更换 执行npm rebuild 重新构建 报错 node版本不一致 nvm切换 版本 不成功 换个窗口又变回原来版本号了 设置默认版本 nvm alias default 14.16.1 发现下面还有一个stable的还指向原来版本 nvm alias stable 14.16.1 rebuild 还是失败 逐个rebuild 每个依赖单…

视频转码方法:多种格式视频批量转FLV视频的技巧

随着互联网的发展&#xff0c;视频已成为日常生活中不可或缺的一部分。然而&#xff0c;不同的视频格式可能适用于不同的设备和平台&#xff0c;因此需要进行转码。在转码之前&#xff0c;要了解各种视频格式的特点和适用场景。常见的视频格式包括MP4、AVI、MKV、FLV等。其中&a…

Selenium安装WebDriver最新Chrome驱动(含116/117/118/119)

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

Labview中for循环“无法终止”问题?即使添加了条线接线端,达到终止条件后,仍在持续运行?

关键&#xff1a; 搞清楚“运行”和“连续运行”两种运行模式的区别。 出现题目中所述问题&#xff0c;大概率是因为代码运行在“连续运行“模式下。 可以通过添加 探针 的方式&#xff0c;加深理解&#xff01;

软件测试:测试分类

一. 按照测试对象划分 1.1 界面测试 界面测试(简称UI测试),按照界面的需求(UI设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查,一般包括如下内容: • 验证界面内容的完整性,一致性,准确性,友好性,兼容性.比如页面内容对屏幕大小的自适应,换行,内容是否…

面向开发者的Android

Developerhttps://developer.android.google.cn/?hlzh-cn SDK 平台工具版本说明https://developer.android.google.cn/studio/releases/platform-tools?hlzh-cn#revisions Android SDK Platform-Tools 是 Android SDK 的一个组件。它包含与 Android 平台进行交互的工具…

SpringBoot——日志及原理

优质博文&#xff1a;IT-BLOG-CN 一、SpringBoot日志 选用 SLF4j&#xff08;接口&#xff09;和 logback&#xff08;实现类&#xff09;&#xff0c;除了上述日志框架&#xff0c;市场上还存在 JUL(java.util.logging)、JCL(Apache Commons Logging)、Log4j、Log4j2、SLF4j…

ES6中实现继承

本篇文章主要说明在ES6中如何实现继承&#xff0c;学过java的小伙伴&#xff0c;对class这个关键字应该不陌生&#xff0c;ES6中也提供了class这个关键字作为实现类的语法糖&#xff0c;咱们一起实现下ES6中的继承。 实现思路 首先直接通过class来声明一个Teacther类&#xff…

毕业设计ASP.NET 2368酒店信息管理系统【程序源码+文档+调试运行】

一、摘要 本文旨在设计并实现一个功能全面、易于使用的酒店信息管理系统。系统将管理员、客户和前台客服三种用户的需求纳入考虑&#xff0c;并针对每种用户设计了相应的功能模块。系统功能包括用户管理、客户管理、客房管理、商品管理、客房预订管理、入住管理和系统管理。此…

【图数据库实战】HugeGraph图计算流程

HugeGraph是一款易用、高效、通用的开源图数据库系统&#xff08;Graph Database&#xff0c;GitHub项目地址&#xff09;&#xff0c; 实现了Apache TinkerPop3框架及完全兼容Gremlin查询语言&#xff0c; 具备完善的工具链组件&#xff0c;助力用户轻松构建基于图数据库之上的…

聊一聊go的单元测试(goconvey、gomonkey、gomock)

文章目录 概要一、测试框架1.1、testing1.2、stretchr/testify1.3、smartystreets/goconvey1.4、cweill/gotests 二、打桩和mock2.1、打桩2.2、mock2.2.1、mockgen2.2.1、示例 三、基准测试和模糊测试3.1、基准测试3.2、模糊测试 四、总结4.1、小结4.2、其他4.3、参考资料 概要…

cmake+OpenCV4.8.0+contrib4.8.0+cuda 12.2编译踩坑

cmakeOpenCV4.8.0contrib4.8.0cuda 12.2编译踩坑 准备工具 cmake &#xff08;去官网下载&#xff09;OpenCV 我下载的是官网发布最新的稳定版本对应的源码&#xff0c;官网目前是4.8.0&#xff0c;github下一个&#xff08;连不上的可以网上找找资源或者科学上网&#xff09…

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `get` 与 `post`

嗨&#xff0c;亲爱的小白们&#xff01;欢迎来到这篇关于使用 jQuery 实现 Ajax 请求的博客。在前端开发中&#xff0c;Ajax 是一项非常重要的技术&#xff0c;它使我们能够在不刷新整个页面的情况下与服务器进行数据交互。而在 jQuery 中&#xff0c;get 和 post 方法提供了简…

SpringBoot——静态资源及原理

优质博文&#xff1a;IT-BLOG-CN 一、使用 SpringBoot 的步骤 【1】创建SpringBoot应用&#xff0c;选中自己需要的模块。 【2】SpringBoot已经默认将这些场景配置好&#xff0c;只需要在配置文件中指定少量配置就可以运行起来。 【3】编写业务逻辑代码。 二、自动配置原理 …

鸿蒙4.0开发笔记之DevEco Studio之配置代码片段快速生成(三)

一、作用 配置代码片段可以让我们在Deveco Studio中进行开发时快速调取常用的代码块、字符串或者某段具有特殊含义的文字。其实现方式类似于调用定义好变量&#xff0c;然而这个变量是存在于Deveco Studio中的&#xff0c;并不会占用项目的资源。 二、配置代码段的方法 1、打…

IObit Unlocker丨解除占用程序软件

更多内容请收藏&#xff1a;https://rwx.tza-3.xyz 官网&#xff1a;IObit Unlocker “永远不用担心电脑上无法删除的文件。” 界面简单&#xff0c;支持简体中文&#xff0c;一看就会&#xff0c;只需要把无法删除/移动的文件或整个U盘拖到框里就行。 解锁率很高&#xff0c;…

【数据结构(三)】单向环形链表和约瑟夫问题(3)

文章目录 1. 单向环形链表应用场景2. 思路分析3. 代码实现3.1. 实现单向环形链表3.2. 产生出队编号序列3.2.1. 思路分析3.2.2. 代码实现 1. 单向环形链表应用场景 Josephu(约瑟夫、约瑟夫环) 问题&#xff1a; 设编号为 1&#xff0c;2&#xff0c;… n 的 n 个人围坐一圈&…

给大伙讲个笑话:阿里云服务器开了安全组防火墙还是无法访问到服务

铺垫&#xff1a; 某天我在阿里云上买了一个服务器&#xff0c;买完我就通过MobaXterm进行了ssh&#xff08;这个软件是会保存登录信息的&#xff09; 故事开始&#xff1a; 过了n天之后我想用这个服务器来部署流媒体服务&#xff0c;咔咔两下就部署好了流媒体服务器&#x…