版本信息
| 项目 | 描述 |
|---|---|
| 发布日期 | 2026-03-05 |
| 版本号 | V4.4.2_CE |
| Commit 号 | e859d1b |
| RPM 版本号 | oceanbase-ce-4.4.2.0-100000032026021017 |
版本概览
OceanBase V4.4.2 是面向混合负载的 TP/AP 大融合 LTS 版本,深度集成 4.2.5 LTS 的事务处理能力与 4.3.5 LTS 的分析处理能力,在数据管理、兼容性、系统安全和运维诊断等多维度系统性增强内核能力,为关键交易负载与复杂分析负载提供更强大、更稳定的技术支撑。
在 TP 场景下,新版本支持二级分区表的一级分区与普通一级分区表进行交换,极大简化大规模数据分区管理和数据重组;新增 Session 级私有临时表,完善临时表体系。OBCDC 支持表级恢复后的增量数据同步,并支持同步 virtual 生成列,更好地满足下游系统对表级增量数据和生成列的消费需求。
KV 场景下,持续完善 OBKV 能力,新增弱读、TTL 支持索引扫描、热 Key 查询优化等特性,并完成对 OBKV‑HBase 监控项的治理,在高并发 KV 与时序场景下提供更低时延与更强可观测性。
性能方面,V4.4.2 面向细分场景进行了专项优化:串行建表性能在同等场景下提升约 60%。针对国产化大规格 CPU 环境,PDML 性能提升约 25%,复制表 Follower 查询性能提升约 14 倍,逼近 Leader 查询能力,显著增强系统横向扩展能力。同时,引入 PX 自适应任务切分机制,自动识别并切分长尾任务,实现并行查询负载重均衡,加速查询完成。
在安全与运维诊断方面,优化死锁检测机制,增强 Active Session History (ASH) 数据完整性,并重构 SQLSTAT 统计信息,为数据库管理员定位性能瓶颈和异常 SQL 提供更精细、更可靠的诊断工具。
V4.4.2 作为 LTS 版本,推荐 TP、AP 和 HTAP 业务使用。
关键特性说明
内核增强
-
分区交换支持一级与二级分区表交换
分区交换功能新增支持二级分区表的一级分区与一级分区表进行交换。具体请参见 分区交换。
-
OBCDC 支持表级恢复后增量数据同步
OBCDC 支持黑白名单功能,在进行数据同步时,只同步在白名单并且不在黑名单中的表,因为表级恢复流程是 offline ddl 流程,对恢复出来的表,OBCDC 获取不到 table_name,无法支持表级恢复后的表的增量数据同步。新版本在 OBServer 表级恢复流程的最后,在 __all_ddl_operation 表中新增字段记录恢复后的表名,这样 OBCDC 就可以识别这个恢复后的表,并根据表名做黑白名单匹配,进而支持增量数据同步。
-
物化视图功能增强
V4.4.2 版本继续完善物化视图能力,包括:
- DDL 能力增强,支持
RENAME、物化视图日志支持加列。 - 增量刷新功能增强,新增支持外连接、
UNION ALL、单表非聚合模式、带LEFT JOIN的聚合物化视图等类型,支持重复的SELECT ITEM和GROUP BY列,MIN/MAX聚合物化视图增量刷新功能增强。 - 嵌套物化视图能力增强,支持级联刷新。
- 物化视图刷新时维度表不刷新,在创建物化视图时,通过新增的
AS OF PROCTIME()语法指定不需要刷新的表,在执行物化视图增量刷新时,不刷新该表的增量数据。 - 单表聚合的增量刷新物化视图支持
MIN()/MAX()聚合函数。 - MLOG 自动化管理,在创建增量刷新物化视图时,自动为基表创建/替换所需要的 MLOG 表,并在后台定期清理冗余的 MLOG 表。
md5_concat_ws函数支持。- 物化视图的视图内容和创建物化视图的报错信息优化。
- 支持基于无主键的增量物化视图。
- 支持引用声明为
AS OF PROCTIME()的视图。 - 物化视图支持 UDT 和 UDF,支持
minimal模式。
- DDL 能力增强,支持
-
SQL 能力增强
V4.4.2 版本,对多项 SQL 能力进行了增强,支持视图过滤条件包含子查询时指定
WITH CHECK OPTION。 -
支持 Session 级别私有临时表
V4.1.0 BP4 版本起禁用了临时表功能,V4.4.2 版本放开临时表功能,支持创建临时表、修改临时表、删除临时表以及基于临时表创建索引等功能。
-
语法扩展
新增
CAST AS INTEGER、CAST AS ARRAY、SPLIT、CONTAINS、NEXTVAL(SEQ)/CURRVAL(SEQ);支持ARRAY<>格式数组定义;支持 JSON 类型列转换为TEXT/MEDIUMTEXT/LONGTEXT;INSERT OVERWRITE支持INTO关键字;SQL 后只加--符号,修改为执行不报错;RANGE、MAXVALUE保留关键字更改为非保留。具体请参见 CAST。 -
备库读功能优化与稳定性增强
V4.4.2 版本,对备库读功能进行了优化,通过优化事务状态推断机制,将原本需要每个副本独立收集参与者状态的方式,改为由协调者 Leader 统一收集和缓存,显著减少消息交互次数。同时引入重试机制,在副本落后时自动转发请求至其他副本处理,以避免阻塞或对事务状态进行错误推断,提升备库读场景的稳定性。
-
支持异构 zone
OceanBase 4.0 设计了同构 zone 的架构,虽然简化了集群部署架构,但是丢失了部分 OceanBase3.x 支持的功能,比较常见的问题是,在单个节点宕机场景下,需要缩容时,需要同时对所有 zone 进行缩容,导致资源浪费。为了解决上述问题,增强 OceanBase 的扩缩容能力,新版本支持了异构 zone 部署架构。
在异构 zone 部署架构下,租户允许配置两种不同的 UNIT NUM,当出现单个节点故障时,可以直接删除故障节点,不需要调整其他 zone,降低了运维成本。同时单个节点宕机,不会影响其他 zone 的负责均衡,降低了对业务流量的影响,实现更平滑的扩缩容。使用手册参考平滑扩缩容应用案例。
-
OBCDC 支持同步 virtual 生成列
OceanBase 4.0 版本开始,虚拟生成列不再记录在 CLOG 中,因此 OBCDC 无法从 CLOG 中同步虚拟生成列,这对依赖虚拟生成列的下游系统而言,无法获取虚拟生成列的值也就意味着数据的丢失,是不可接受的。新版本 OBCDC 支持了同步 virtual 生成列,满足下游系统对虚拟列数据的消费需求。
SQL 兼容
-
Union Distinct RCTE
CTE 支持 Recursive Union All 及 Recursive Union Distinct。新版本扩展支持 Recursive Union Distinct,保证输出数据的唯一性;同时加强 Recursive Union All,支持内存不足时数据落盘。具体请参见通用表表达式。
OBKV/多模 增强
V4.4.2 版本对 OBKV/多模场景能力做了多项增强,主要包括以下几个方面:
-
OBKV 支持弱读和就近机房读
- 弱读,允许业务从非主副本(Follower)读取数据,由于这些副本可能不是最新的,因此读到的数据可能是略旧于主副本的版本。
- 就近机房读,客户端根据当前地理位置或网络拓扑,优先从离自己最近的机房读取数据,以减少网络延迟,提高响应速度。
-
TTL(Time To Live)支持索引扫描功能
允许用户通过指定索引来加速 TTL 数据清理过程。默认的主键扫描场景下,TTL 任务需要进行全表的扫描并且读取完整的行来判断是否过期,通过对过期列建立本地索引可以降低全表扫描完整行带来的 IO 开销,加速扫描的速度。使用说明参考 OBKV-Table TTL 和 OBKV-HBase TTL。
-
OBKV-HBase 监控增强
OBKV-HBase 监控能力增强,主要包括:
* 区分 HBase get 和 scan 在 QPS、RT 和 P99 监控中的统计,分别使用独立的监控项进行跟踪。 * 在 batch 场景下支持区分单 put 和单 delete 操作,提供更细粒度的监控统计。 * 在未开分布式的情况下,HBase batch get 操作已支持使用 audit 跟踪。 * 在 OBKV-HBase 客户端新增返回相应操作的 OPS、RT 和 P99 数据。新增监控项说明请参见 OBKV-HBase 监控指标。
-
时序模型支持 put 操作
由于时序模型的
V列是 json 类型,受限于 lob 无法支持 put 操作,时序 put 操作是基于 insert 接口实现。insert 接口在执行时会进行主键冲突检查,在压测中发现主键冲突检查占用大量的读带宽,冲突检查需要对 sstable 发起 get 操作,此时读延迟会很高,同时在随机写入场景下(大部分用户场景),转储合并占用的 IO 带宽也会很大,两者叠加会让云盘带宽很快达到上限瓶颈,从而触发写入限速。因此,在 V4.4.2 版本支持 put 操作,解决上述问题。 -
OBKV-HBase 查询优化
OBKV-HBase 的查询采用全范围扫描策略, 先扫描所有 qualifiers 的数据再进行过滤。这种方式在服务端会产生大量冗余扫描和处理开销, 特别是当对一个宽行或者多版本的行查询只涉及少量 qualifiers 时, 延迟问题尤为明显。 在 V4.4.2 新增一个配置项
HBASE_HTABLE_HOTKEY_GET_OPTIMIZE_ENABLE用于指定快速跳过宽行或多版本的行来降低查询时延。功能详细说明请参见 OBKV-HBase 查询优化。
性能提升
-
串行建表性能优化
为了提升 DDL 的性能,在 4.2.x 版本支持了 CREATE/DROP 等 DDL 的并行执行能力,但是当存在未支持并行的 DDL 时,无法利用并行 DDL 能力,因此需要优化串行 DDL 的性能。本特性以串行建表为目标场景,对 schema 的生成、写入与刷新等环节进行了优化,能够明显提升串行建表的速度,也能够小幅提升其他类型 DDL 的运行速度。经测试,创建 1000 张 sysbench 简单表,V4.4.2 相比 V4.3.5,性能提升 60%。
-
库函数申请内测性能优化
基于 mimalloc 内存分配器思想设计的库函数的内存分配优化,主要用于提升 OceanBase 中库函数在高频小对象场景下的内存分配效率。通过引入分片式内存块组织、延迟空闲回收及无锁竞争机制,显著优化库函数分配内存的性能,有效降低分配延迟与资源争用,为大规模高并发业务提供高效、稳定的内存管理支撑。
-
国产化大规格机器场景下的性能优化
主要对国产化 CPU 环境下典型场景的的 CPU 热点进行优化, 包括优化 PDML 和 复制表查询的性能。在大规格 256c 环境中高并发 PDML 性能将提升25%,并减少了非 PDML 场景的内存;业务连 Follower 查询复制表的性能提升 14 倍,从 2w QPS 增长到 27w+,与直接连 Leader 查询的 30w QPS 之间差距不到 10%。在 32c 的小规格环境上述优化对性能同样存在提升。
-
PX 自适应任务切分
针对PX扫描中出现长尾任务现象,自适应的对长尾任务再次划分,实现负载重均衡能力,加快查询速度。具体请参见 分布式执行和并行查询。
易用性提升
-
死锁检测诊断优化
为了提升死锁检测的易用性,新版本新增多项诊断优化,死锁检测发现死锁后汇报内部表时,携带更加丰富的信息,完善锁到事务的映射逻辑,同时增加了对切主场景的死锁检测能力,同时,修复了转储场景中,诊断信息维护不准确的问题,提升诊断稳定性。
-
实时统计信息收集
GV$OB_SQL_AUDIT 和 GV$SQL_PLAN_MONITOR 是常用的 SQL 监控视图,记录了每一次 SQL 请求的来源、执行状态、资源消耗及等待时间、 SQL 文本、执行计划、算子消耗的时间、吐行等关键信息。但在逆序扫描等涉及存储层信息收集的场景下,仍然存在信息不足的问题。为了进一步提升 SQL 诊断的易用性,在 4.4.2版,存储层新增实时统计信息并记录在监控视图中,包括查询访问的微块数和行数、下压的微块数和行数、走下压路径的耗时、不走下压路径的耗时、skip index跳过的微块数和行数等主要信息,并增加filter过滤的行数、filter过滤的耗时、读到的未提交行数量等信息,同时优化了 SQL Audit等监控视图中统计信息收集到数据不完整和不准确的问题。
-
ASH 数据完整性增强
V4.2.5 对 ASH 进行了重构,ASH 可以跟踪租户队列请求的状态,每一个请求每一秒都会向 ASH buffer 写入一条记录,目前 ASH buffer 是 30M,大概能存五万条数据,每两分钟检测一次是否需要将内存中的数据落盘,但在队列大量积压场景下,ASH buffer 来不及落盘数据就已经被覆盖了,会丢失问题事件的重要诊断数据。V4.4.2 申请 __all_virtual_ash 表增加权重列 weight,默认为1,当 ASH buffer 可能被快速写爆时(一般是由于队列积压),不会对每一个队列积压等待事件写一条 ASH 记录,而是通过 weight 标志一条记录权重,从而增强诊断数据的完整性。
-
SQLSTAT 重构
Sqlstat 记录了 sql id+plan hash 维度的统计信息,根据这些信息,可以较为直接地判断出这个 SQL 是否存在问题,协助找到 RT 异常的 sql 。但是目前版本,sqlstat 存在一些已知问题:
- plan cache 共用 lib cache,sqlstat 占用过多 lib cache 导致计划无法加入 plan cache。
- 在更新 sqlstat 快照值时只更新了 leader 节点的,而没有更新 follower 节点的数据快照,导致 follower 节点数据错误。
- sqlstat 落盘时间为 1 小时一次,无法及时反应 SQL 执行情况。 为了解决上述问题,在 V4.4.2 版本对 sqlstat 进行了重构,主要涉及内容:
- 将 sqlstat 从 library cache 移除,维护一个租户 hashmap,定时执行快照和淘汰。
- 每次 SQL 执行完成之后,先累加到 physical plan 上,达到累计次数后再累加到租户 hashmap 上。
- 查询虚拟表时先将 physical plan 上的数据累加到租户 hashmap 上,然后再输出数据。
兼容性变更
视图变更
新增如下变更:
| 视图 | 变更类型 | 变更说明 |
|---|---|---|
| DBA_OB_LOB_CHECK_TASKS | 新增 | 记录 LOB 一致性校验和恢复的任务扫描的进度,可通过该视图查询租户级任务与 LS(Logical Shard)级任务,查询租户级任务时 |
| CDB_OB_LOB_CHECK_TASKS | 新增 | 记录 LOB 一致性校验和恢复的任务扫描的进度 |
| DBA_OB_LOB_CHECK_EXCEPTION_RESULT | 新增 | 展示 LOB 一致性校验的异常 table 和 tablet 以及异常类型 |
| CDB_OB_LOB_CHECK_EXCEPTION_RESULT | 新增 | 展示 LOB 一致性校验的异常 table 和 tablet 以及异常类型 |
| GV$ACTIVE_SESSION_HISTORY / V$ACTIVE_SESSION_HISTORY / GV$OB_ACTIVE_SESSION_HISTORY / V$OB_ACTIVE_SESSION_HISTORY | 新增列 |
|
| DBA_WR_SQLSTAT/CDB_WR_SQLSTAT | 变更实现 | SAMPLE_TIME 列,表示 sqlstat 快照落盘的时间,在一次 WR 快照间隔内,sqlstat 可能落盘多次 |
| GV$OB_SQLSTAT | 新增列 | 新增 latest_active_time,表示这个 sqlstat 最后一次活跃的时间 |
| DBA_OB_KV_TTL_TASKS | 新增列 | 新增 scan_index,记录 TTL 任务扫描的索引 |
| DBA_OB_KV_TTL_TASK_HISTORY | 新增列 | 新增 scan_index,记录 TTL 任务扫描的索引 |
| CDB_OB_KV_TTL_TASKS | 新增列 | 新增 scan_index,记录 TTL 任务扫描的索引 |
| CDB_OB_KV_TTL_TASK_HISTORY | 新增列 | 新增 scan_index,记录 TTL 任务扫描的索引 |
系统变量
| 系统变量 | 修改类型 | 描述 |
|---|---|---|
| json_float_full_precision | 新增 |
|
函数变更
| 函数名 | 变更类型 | 描述 |
|---|---|---|
| DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS() | 新增参数 |
|
语法变更
| 语法 | 变更说明 |
|---|---|
| WITH CHECK OPTION 支持子查询 | 兼容支持 WITH CHECK OPTION 带子查询的行为 |
周边配套
OceanBase 数据库 V4.4.2 推荐使用的平台工具版本如下:
| 组件 | 版本 | 备注 |
|---|---|---|
| ODP | 4.3.6 | - |
| OCP | 4.4.1 | - |
| OBD | 4.2.0 | - |
| ODC | 4.4.1bp1 | - |
| OBCDC | OBCDC 4.4.2 | - |
| OMS | 4.2.12 | - |
| obclient | obclient2.2.10 | - |
| libobclient | libobclient2.2.10 | - |
升级说明
-
升级路径
-
支持从 V4.2.5 BP7/V4.4.1 平滑升级到 V4.4.2 版本。
-
不支持使用了向量的集群升级到 V4.4.2 版本。
-
升级注意事项
升级到 V4.4.2 时,如果升级前置检查报如下错误:
tenant has sys table with progressive_merge_round=1: tenant_id xxx table_ids 'xxx'
则表示暂时无法支持该升级。