去年的 OceanBase 年度发布会中,OceanBase 推出了一体化数据库的首个长期支持版——4.2.1 LTS。这一年来,已有数百位客户在真实的生产环境中对该版本进行了验证并成功上线,证明了OceanBase 在TP场景中的卓越性能。与此同时,越来越多的客户正逐步将OceanBase 引入其企业的关键业务系统中,并拓展至更多业务场景中使用。
随着 OceanBase 在更多行业和场景的关键业务系统中得到应用,我们也看到产品在功能、性能、兼容性、易用性等方面涌现出更多新的需求与挑战。经过一年的打磨,在10月23日举办的 2024 年度发布会上,我们正式发布了 OceanBase 4.2.5 LTS 版本,该版本作为 TP 场景的全新长期支持版本, 面向承载关键业务的需求与目标,在内核能力、兼容性、稳定性、易用性、高可用、性能等方面实现了增强与突破。
面向关键业务系统对数据库提出的更高的兼容性、稳定性、安全性和可靠性等挑战,OceanBase 4.2.5 LTS 全面兼容了 MySQL 5.7, 进一步扩展了 Oracle 兼容性。同时对 SQL 引擎进行了迭代升级, 重构 Query Range 实现,强化了估行系统,针对性解决了若干极端场景下的计划不优的问题,执行引擎的稳定性和性能都得到了提升。安全性方面,新版本强化了 MySQL 租户模型的安全特性,新增 PL、Outline 和 Sequence 权限管控机制和数据库审计功能与多种权限支持。在高可用方面,新版本扩展了备份恢复可支持的存储介质,支持了 Transfer 搬迁活跃事务能力、新增了基于 IO 负载的日志盘故障机制,高可用能力上了一个新的台阶。
OceanBase 4.2.5 LTS 在诊断能力和易用性上也达到了新的里程碑。在易用性方面,新版本支持 buffer 表自适应合并能力优化、提供同时绑定计划和限流的能力,提供多场景的手动运维日志流副本能力,并新增一系列动态视图、系统包来观测系统运行情况,全面提升管理效率,降低操作成本。诊断能力方面,新版本丰富了多个维度的诊断视角,可观测性进一步提升。
此外,OceanBase 4.2.5 LTS 进一步增强多模融合支持,满足了用户使用一个数据库处理更多数据模型、简化系统技术栈的需求。新版本不仅推出了全新的 OBKV-Redis 兼容形态,兼容 Redis 协议,还通过多种优化策略进一步提升 OBKV 的性能,并引入更多诊断能力,增强了 OBKV 诊断易用性。
经性能测试,OceanBase 4.2.5 LTS 在 4C、8C 小规格集群 TP 场景下,多项性能相较 4.2.1 均实现大幅提升,同时在 96C 大规格集群 TP 场景下的性能也达到 6% 到 28% 的显著提升。
OceanBase 4.2.5 LTS 作为面向 TP 场景的全新长期支持版本,针对关键业务系统提出的各项需求与挑战,打造更全面、更稳定、更可靠、更好用的一体化原生分布式数据库,致力于长期稳定支持用户在更多 TP 场景下的关键业务需求。接下来,我们将深入解读 OceanBase 4.2.5 LTS 版本的主要特性与亮点:
- 优化器增强
- 执行引擎优化
- PL 增强
- 兼容性增强
- OBKV 增强
- OBCDC 能力增强
- 诊断能力提升
- 安全特性增强
- 稳定性提升
- 易用性提升
- 高可用增强
- 性能全面提升
1、内核能力增强
(一)优化器增强
新版本重构了极端场景的查询解析实现,降低了解析阶段资源消耗,增强了极端 SQL 执行的稳定性,提升了 SQL 解析性能。同时从表达式规范化、条件聚合函数、多 Min/Max 、SEMI JOIN 拆分等多个场景优化了查询改写能力。新版本重构 Query Range 抽取实现,丰富了 Query Range 覆盖场景,提升了 Range 抽取性能,降低了抽取过程中的内存消耗。同时,新版本优化了统计信息收集策略,支持统计信息异步收集,在统计信息过期时自动触发异步收集任务。基于 DBMS_STATS 包新增统计信息拷贝场景支持,此外统计信息收集效率也得到了明显提升。新版本也支持通过 DBMS_STATS 包来收集或设置系统统计信息系数,以达到代价模型自适应硬件的目的。另外新版本进行了估行系统重构,根据不同场景指定不同的估行策略优先顺序,并提供 HINT、系统变量等手工干预估行策略选择的方式。通过优化基表估行与选择率计算等方式,提高了优化器代价估计的准确性。值得一提的是新版本解决了极端场景如 IN 谓词右支为很多常量的场景下(简称“大 IN”)以及 order by limit 场景因计划选择不优导致的性能问题。
(二)执行引擎优化
在 SQL 执行层进行了一系列优化,如 Recursive CTE 搜索优化、Window Function 接入自动内存管理、Adaptive Hash GBY 数据倾斜优化、Adaptive Hash GBY 自适应策略完善、Hash Based Distinct Aggregate 优化等,提升 SQL 执行性能和系统稳定性。新版本在事务层通过并行提交、并行回放日志等优化手段明显提升高并发场景下 PDML 执行性能。此外优化了自增列/Sequence 在 Order 模式下的性能表现。
(三)PL 增强
新版本针对重新编译场景做了梳理细化,在临时表匹配、静态 SQL 依赖对象信息收集、表 DDL 变更等方面进行一系列逻辑优化,减少因 PL CACHE 缓存对象失效导致重新编译的场景。新增执行期存储过程编译落盘功能,同时在存储过程 DDL 执行成功后将编译结果缓存到 PL Cache 并落盘,后续执行存储过程时,提升直接命中 PL Cache 缓存的概率,进一步提高存储过程执行性能。
(四)MySQL 兼容性增强
完成了 MySQL 5.7 全面兼容的目标,使得更多 MySQL 三方生态工具可以无缝适配,云上 RDS 应用能够更加顺滑迁移到 OceanBase。新增支持了表锁和锁函数、 Event Scheduler、XA 事务、列级权限、角色管理、非法日志以及客户端本地导入,扩展了多种字符集的支持,完善了通信协议命令,大幅强化了空间数据(GIS)存储和计算分析的能力,支持了 JSON Partial Update 功能,提升了部分更新场景下的性能表现。此外新版本兼容了大量语法细节、系统变量和系统视图。
(五)Oracle 兼容性增强
新增支持了 DBMS_PROFILER、UTL_RECOMP,丰富了 DBMS_SCHEDULER 和 DBMS_STATS 功能。此外兼容了 Oracle Proxy User 机制以及 Lateral Inline View 语法,扩展了全局临时表使用范围,完善了 UDT 相关的依赖对象信息收集机制,强化了相关视图的准确性。同时支持了 OceanBase Oracle 租户间的远程存储过程调用以及远端 UDF 的调用能力。新版本强化了 DBLink 能力,支持域名解析及 Binary 数据远端写能力。此外支持通过 JDBC setMaxRows 接口在协议层控制原始 SQL 执行完成后的最大返回行数。新增了 SDO_GEOMETRY 数据类型以及基于该类型创建空间索引的支持,强化了 XML、JSON 的功能和性能。
(六)OBKV 增强
OBKV 推出了全新的 OBKV-Redis 兼容形态,兼容 Redis 协议,提供了成本低廉的键值缓存服务。该形态进一步丰富了产品线。此外,通过 Batch 批处理、组提交、全局索引等优化策略,提升了 OBKV-Table 的性能。通过新增客户端信息视图,可以方便了解业务的客户端配置,提升问题排查的效率。新版本引入基于操作的分类诊断,增强了 OBKV 诊断易用性。OBKV-HBase 的兼容性和性能均有显著提升。
(七)OBCDC 能力增强
新版本进一步强化了 OBCDC 能力,支持通过简单的正则表达式配置黑白名单,来满足用户只需要同步部分表的数据消费场景。新版本优化了 OBCDC 从事务中间启动的启动效率,支持了从备租户同步的能力,减小了对主租户的资源占用。
(八)诊断能力提升
全面增强等待事件框架,重构统计监控框架,新增 XA 事务监控统计、响应时间直方图、日志传输链路视图、资源组级别统计视图等提升系统的可观测性。新增了支持了性能诊断利器 SQL STAT,用于实时记录 SQL 执行状态和执行期间统计项信息。新版本完善了时间统计模型, 新增了 DB Time、DB CPU 等多个维度的时间统计分析指标。在 SQL PLAN MONITOR 中新增多个维度的监控内容,提升实时诊断能力。ASH 诊断新增多个等待事件,覆盖了更多场景,同时新增了节点级分析能力。SQL AUDIT 也新增了多个等待时间耗时统计项。新版本对系统日志进行了优化,新增 alert.log 用于记录 DBA 关注的日志信息。同时将 PL 和 SQL 的日志解耦,为 PL 内部的 SQL 语句赋予独立的 TraceID,并在 SQL AUDIT 增加外层 PL TraceID 记录,有效提高问题诊断效率。
(九)安全特性增强
新版本强化了 MySQL 租户模型的安全特性,新增 PL、Outline 和 Sequence 权限管控机制和数据库审计功能。此外新增了 REFERENCES/CREATE ROLE/DROP ROLE/TRIGGER 权限支持。
2、稳定性提升
新增自增列 cache size 表级设定功能,用户可以根据列类型/业务模型/业务流量等自定义配置不同表的缓存大小,从而做到跳变和性能的均衡。与 ODP 配合支持了全局唯一的会话 ID,解决了长久以来会话 ID 不唯一导致的极端情况下 kill session 不准确的难题。同时新增日志压缩存储压缩,通过将事务提交的日志进行压缩,间接提高日志盘吞吐能力,提升日志盘可容纳的事务日志总量。为了降低大数据量传输带来的带宽消耗,新版本支持了 OBServer 到 ODP 的链路压缩功能。
在资源隔离方面,新增任务级、租户级、OBServer 级三个维度的旁路导入资源管理能力,对高并发度多任务并行场景下的资源使用进行有效控制,避免影响其他任务的正常运行。同时支持了全局 CPU 前后台任务隔离能力,DDL 执行、统计信息及 Clog 日志同步等多个后台模块均纳入管理,可以在整体层面上限制后台任务的可用资源。
在内存使用上,新版本完善了内存限速机制,提供了更细致的手段来控制多个模块的内存使用,增加了时间维度触发事务数据表冻结转储的功能。同时新增对单条 SQL 的执行内存限制能力。
新版本针对性优化了只读副本的能力,新增只读副本对 Region 的感知能力,在日志同步时会尽量选择相同 Region 的其他副本作为上游,尽量避免跨 Region 的网络传输,节省跨 Region 带宽。此外实现了只读副本访问隔离功能,定义了内部的数据请求路由规则,严格禁止将发送到只读 zone 中的请求转发到非只读副本,从而实现 TP 和 AP 的资源隔离,保证 HTAP 场景下的长期稳定运行。
3、易用性提升
新版本将主备租户操作记录拆分到每个租户下,提供 CDB/DBA_OB_TENANT_EVENT_HISTORY 视图供查看详细记录。此外在 Oracle 租户模式下支持了网络备库复制角色,用于简化网络备库配置流程。同时新增物理恢复进度统计,获取恢复任务的进度情况。新增支持了复制表属性变更,通过 ALTER TABLE 命令轻松实现表属性转换,降低用户操作成本。此外新版本允许用户在一条创建 OUTLINE 的语句中同时绑定执行计划和限流,满足用户既需要干预执行计划,又需要对高流量 SQL 限流的需求,同时新增 Format Outline 特性,提供了一种更为宽松的 outline 匹配规则。
新版本继续优化了 Buffer 表自适应合并特性,提供了 5 种档位的合并策略,允许用户根据业务场景为每张表设置不同的 table_mode,来应对 Buffer 表引起的读放大现象。
新增支持了 Transfer 分区功能,用户可以选择将特定的分区迁移到特定的日志流上,并提供任务状态查看能力。此外重新设计实现了日志流副本级别任务的运维方式,提供了一系列语法,用于支持日志流副本的添加、删除、副本类型转换、迁移、修改日志流 paxos 成员数量和取消容灾任务等能力,满足用户手动运维日志流副本的需求,并新增 DBMS_BALANCE 系统包,为用户提供手动触发分区均衡的方法。
为了用户可以更方便地获取集群当前的逻辑资源对应的物理资源使用信息,以便更可靠地规划扩缩容、节点替换、备租户创建等操作,新增资源规格估算功能,并提供一系列动态视图、系统包。新增索引使用监控功能,针对用户租户创建的索引表引用次数,做了表级的统计汇总,方便用户根据索引使用次数做 SQL 调优,或根据索引使用来删除不常使用的索引表,释放磁盘和内存资源。此外动态修改 OBServer 内存规格由重启生效优化为实时生效,减小内存规格修改操作的影响。
新增 OceanBase LogMiner(简称 ObLogMiner)工具,ObLogMiner 是一款用来对 OceanBase 数据库进行日志分析的命令行工具,支持在线及离线的日志分析。此外为了降低系统日志对存储空间的需求,新版本支持了系统日志压缩功能,在存储空间容量不变的情况下,开启 zstd 压缩后,预计可以存储不开启压缩时 20 倍的日志量。
4、高可用增强
新增 Tablet Location 主动广播能力,减少 Transfer 后映射关系变化导致的 SQL 重试和读写报错,并提供主动刷新能力兜底,避免不可恢复的读写报错问题。支持了 Transfer 搬迁活跃事务的能力, 允许活跃事务并发执行, 并保证并发事务不会因为 Transfer 导致异常回滚或产生一致性问题。同时实现了基于 IO 负载的日志盘故障探测算法,能更有效地探测到云盘故障并执行仲裁降级,避免云盘故障持续影响业务请求。
新增主备租户角色切换验证功能,在切换命令后添加 VERIFY 关键字,提前验证对应操作是否可以成功执行。实现了主备租户之间的自动路由功能,确保服务高可用性,即使在主租户故障情况下也能无缝切换至备租户继续提供服务。丰富了备份恢复支持的存储介质类型,除文件存储(NFS)和对象存储(OSS/COS)外,新增对 AWS S3、华为云 OBS、GCP GCS 存储服务的支持。同时增加了 SET/PIECE 级物理恢复功能,提供 add restore source 命令来加载新路径的数据备份集 SET 或日志归档 PIECE,允许按需恢复到指定时间。此外支持了强关归档功能,不强制要求写入结束归档元信息,也可将归档任务状态推进到 STOP,保证在异常情况下能够正常关闭归档任务。
5、性能全面提升
新版本针对针对 4C、8C 小规格集群进行了专项性能优化,在 TP 场景的性能较 V4.2.1 有大幅提升。
在 96C 大规格集群,在 TP 场景下的性能也有 6%到 28%的提升。
6、写在最后
OceanBase 4.2.5 LTS 版本作为面向 TP 场景的全新长期支持版本,致力于长期稳定支持用户在更多关键业务场景下的需求,也代表着 OceanBase 在助力用户实现关键业务系统升级的道路上再次迈出坚实的一步。在未来的版本中,我们将深入更多关键业务场景,进一步提升 OceanBase TP 能力与性能,打造一体化产品能力。
OceanBase 的每一次更新迭代都离不开每一位用户和开发者的支持与贡献,您宝贵的使用反馈与建议是我们不断前进的动力。未来,我们将继续与用户携手同行,面向现代业务架构,共同打造助力关键业务系统升级的原生分布式数据库。
如果您感兴趣, OceanBase 云数据库 现已支持 1年免费试用,快来体验吧!>>