---
title: 发布记录 - oceanbase-database-rn - OceanBase
description: OceanBase oceanbase-database-rn 发布记录与版本说明
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

# OceanBase 数据库 发布记录

[### OceanBase 数据库 V4.6.0

2026-07-13](#V4.6.0) [### OceanBase 数据库 V4.5.0

2025-11-26](#V4.5.0) [### OceanBase 数据库 V4.4.2

2026-02-10](#V4.4.2) [### OceanBase 数据库 V4.4.1

2025-09-26](#V4.4.1) [### OceanBase 数据库 V4.4.0

2025-07-08](#V4.4.0) [### OceanBase 数据库 V4.3.5

2026-06-09](#V4.3.5) [### OceanBase 数据库 V4.3.4

2024-12-10](#V4.3.4) [### OceanBase 数据库 V4.3.3

2025-02-07](#V4.3.3) [### OceanBase 数据库 V4.3.2

2024-07-16](#V4.3.2) [### OceanBase 数据库 V4.3.1

2024-05-17](#V4.3.1) [### OceanBase 数据库 V4.3.0

2024-03-22](#V4.3.0) [### OceanBase 数据库 V4.2.5

2024-10-21](#V4.2.5) [### OceanBase 数据库 V4.2.4

2024-07-10](#V4.2.4) [### OceanBase 数据库 V4.2.3

2024-04-26](#V4.2.3) [### OceanBase 数据库 V4.2.2

2024-01-15](#V4.2.2) [### OceanBase 数据库 V4.2.1

2023-09-28](#V4.2.1) [### OceanBase 数据库 V4.2.0

2023-08-02](#V4.2.0) [### OceanBase 数据库 V4.1.0

2023-03-31](#V4.1.0) [### OceanBase 数据库 V3.2.4

2022-11-01](#V3.2.4) [### OceanBase 数据库 V3.2.3

2022-04-18](#V3.2.3) [### OceanBase 数据库 V3.2.2

2022-01-10](#V3.2.2) [### OceanBase 数据库 V3.2.1

2021-09-30](#V3.2.1) [### OceanBase 数据库 V3.2.0

2021-07-05](#V3.2.0) [### OceanBase 数据库 V3.1.2

2021-06-18](#V3.1.2) [### OceanBase 数据库 V3.1.1

2021-05-18](#V3.1.1) [### OceanBase 数据库 V2.2.77

2021-05-08](#V2.2.77) OceanBase 数据库 V4.6.0

最后更新时间：2026-07-15 10:36:41

## V4.6.0 Hotfix4

### 版本信息

- 发布时间：2026 年 07 月 13 日
 - 版本号：V4.6.0 Hotfix4
 - 分布式 RPM 版本号：oceanbase-4.6.0.0-100040012026070914

### 关键缺陷修复

- 修复 VSAG SetImmutable 后，未释放锁内存的问题。
 - 修复备份操作时，系统可能出现错误码 -9120 的问题。
 - 混合搜索场景下的向量查询功能接入 Query Profile 机制。
 - 修复内存爆，DASTokenOpH 模块占用 6G+ 的问题。
 - 修复混合搜索查询 rescan 时没有切 LS id，可能导致查询卡住超时的问题。
 - 修正 `hybrid_search_partition_path` 参数的生效逻辑。
 - 修复混合搜索 bq snap 和 active segment 都存在场景召回率的问题。
 - 混合搜索放开 point get 优化路径，提供 search options 配置。
 - 修复 LS 销毁，向量资源清理适配的问题。
 - 修复混合搜索接口返回空的问题。

## V4.6.0 Hotfix3

### 版本信息

- 发布时间：2026 年 06 月 17 日
 - 版本号：V4.6.0 Hotfix3
 - 分布式 RPM 版本号：oceanbase-4.6.0.0-100030012026061216

### 关键缺陷修复

- 修复索引查找时在数据表中未找到对应行的问题。
 - 修复在 `check_when_is_match` 处发生 observer 崩溃的问题。
 - 修复重建全文索引正交删表在清理阶段的问题。
 - 修复预过滤场景返回查询结果 0 的问题。
 - 修复在 `prepare_insert_iter` 处发生 observer 崩溃的问题。
 - 修复向量索引冻结与持久化频繁失败的问题。
 - 修复添加 `filter` 条件执行慢的问题。
 - 修复因搜索索引导致合并卡住的问题。

## V4.6.0 Hotfix2

### 版本信息

- 发布时间：2026 年 06 月 11 日
 - 版本号：V4.6.0 Hotfix2
 - 分布式 RPM 版本号：oceanbase-4.6.0.0-100020012026061020

### 关键缺陷修复

- 修复在执行排序操作时，`add_heap_sort_row` 函数发生崩溃的问题。
 - 修复 500 租户模块 CommonArray 膨胀的问题。
 - 修复 **向量 + term + limit100** 在 10p 和 30p 时候 RT 差距大的问题。
 - 修复分区表向量混合搜索 search option 设置 pre-knn 走暴力搜索的问题。
 - 修复 TTL Lock 行报主键冲突的问题。
 - 修复未提交行不能使用 rowscn skip index 的问题。
 - 修复在执行 HNSW 索引相关操作时，`get_index_number` 函数发生崩溃的问题。
 - 修复稀疏向量索引 sindi 创建报错 7604 的问题。
 - 修复默认转义符为空的版本控制问题。
 - 修复创建 text-embedding-v4 模型的语义向量，执行 refresh index 报错 4016 的问题。
 - 修复 dbeaver 客户端工具非分区表后建全文索引报错 4016 的问题。
 - 修复 SINDI 索引创建失败报错 4013 的问题。
 - 优化升级脚本。
 - 修复 knn+json_overlaps 的大小账号场景，90% 选择率，查询秒级的问题。
 - 修复 HNSW 前过滤结果不稳定的问题。
 - 修复 `do_close` 方法发生崩溃的问题。
 - 修复混合搜索多路 knn 场景，不同 knn 路使用不同的向量列，不同向量列纬度不同，查询报错 4016 的问题。

## V4.6.0 Hotfix1

### 版本信息

- 发布时间：2026 年 04 月 20 日
 - 版本号：V4.6.0 Hotfix1
 - 分布式 RPM 版本号：oceanbase-4.6.0.0-100010032026041710

### 关键缺陷修复

- 修复混合搜索 dsl 没有走到分区裁剪，和普通 SQL 查询 RT 有数量级差距。
 - 修复全文索引多分区表 select index 失败的问题。
 - 修复混合搜索 filter 查询会算分与 es 不符合的问题。
 - 修复 VecIdxTask 模块疑似泄漏的问题。
 - 修复 AI Function 支持图片 && 支持并发的问题。
 - 修复调用 AI_EMBED 函数时引发 observer 进程崩溃的问题。
 - 修复向量索引构建过程中序列化操作引发 observer 进程崩溃的问题。
 - 修复 `UPDATE` 语句因列投影偏移触发防御性错误的问题。

## V4.6.0

### 版本信息

- 发布时间：2026 年 4 月 10 日
 - 版本号：V4.6.0
 - RPM 版本号：oceanbase-4.6.0.0-100000132026040922

### 版本概览

OceanBase 数据库 V4.6.0 版本是一次面向现代化数据处理的重要版本升级。

- AI 混合搜索能力全面升级

  推出原生 SQL 混合搜索接口，支持向量、全文与标量等多模态融合查询。新增 Match Phrase 短语搜索、搜索索引（Search Index），并重构混合搜索执行框架，大幅优化全文索引的查询与构建性能，为 AI 知识库等场景提供高性能、高精度的混合搜索体验。
 - 向量数据库功能增强

  优化 HNSW 索引在增量场景下的性能表现，扩展 IVF 索引支持无主键表，并通过 HGraph 优化大规模聚类效果。新增向量索引召回率评估与稀疏向量优化，结合 Document AI 文档处理能力，构建端到端的“RAG all in One”知识库解决方案。
 - HTAP 混合负载能力提升

  实现列存副本的智能路由与强一致性读，新增列存表自动分区分裂能力。优化 PX 并行计划排队与自适应任务划分机制，并支持增量数据编码及 Skip Index，为混合负载提供更均衡高效的分析处理能力。
 - PL 引擎性能优化

  提升系统包执行效率，支持 PL 内动态 SQL 复用 Plan Cache。增强 FORALL 批量执行、UDF 索引查询、事务异步提交与流式游标等关键功能，显著提升存储过程及复杂业务逻辑处理性能，为高并发 OLTP 场景提供有力支撑。
 - 兼容性与功能完整性提升

  支持 MySQL Session 临时表，优化 Oracle 全局临时表性能。扩展 Recursive CTE、分区交换、物化视图等 SQL 能力，兼容 Iceberg V3 格式与 V2 写操作，提供 REST Catalog 协议及复杂数据类型文件支持，为企业级数据集成与分析提供更完善的解决方案。
 - 系统性能优化

  国产化大规格机器性能提升，优化 PDML 与复制表查询性能，高并发场景下复制表查询性能提升 14 倍。引入 lock-free 内存分配器，单线程内存分配性能提升 168%，显著增强系统整体性能。
 - OBKV 数据模型能力增强

  新增弱读就近机房读、TTL 任务索引扫描与限速优化，完善 HBase 监控指标。时序模型支持底层 put 操作并优化热点 key 查询，为时序和宽表场景提供更高效的数据访问与运维监控能力。
 - OBCDC 功能增强

  支持表级恢复后增量数据同步，确保 OBCDC 稳定运行。同时支持虚拟生成列实时计算，保障下游 MySQL Binlog 兼容性，提升数据同步的可靠性和一致性。
 - 安全与可靠性全面提升

  新增无业务侵入的列加密与 caching_sha2_password 认证机制，优化备库读功能以降低消息交互。增强备份数据完整性校验，完善大查询资源限制，确保大小查询共存时的服务质量，为企业核心业务提供更全面的数据保护与稳定性保障。
 - 运维管理能力增强

  重构 SQLSTAT 与 ASH 架构，确保监控数据完整准确。细化等待事件，优化 Plan Cache 内存管理与诊断，提升 LOB 一致性校验能力与 DROP/PURGE DATABASE 性能。新增异构 Zone 支持，引入窗口合并特性优化合并性能，为企业大规模生产环境提供更智能高效的运维保障。

### 关键特性说明

#### 混搜能力增强

- 混搜 SQL 语法

  V4.4.1 版本开始支持通过 `DBMS_HYBRID_SEARCH` 系统包进行向量、全文、标量等索引的混合搜索，在此基础上，V4.6.0 版本新增了对用户使用更友好的 SQL 混合搜索接口，实现了原生 SQL 语法支持多模态融合搜索。新增 `SELECT ... FROM HYBRID_SEARCH(TABLE table_name, DSL_STRING)` 语法，通过纯 SQL 路径接入 DAS 混搜计算框架，提供更好的查询性能。在堆表下支持向量搜索（KNN）、全文搜索、标量过滤（term/range/terms）、JSON/数组表达式查询的混合组合，提供加权融合、RRF（互惠排名融合）、WRRF（加权 RRF）等多种融合算法。支持多路向量查询、复杂布尔组合查询（must/should/filter/must_not）以及 `min_score` 分数过滤，并支持多路查询结果的分数归一化处理。
 - 全文索引 Match Phrase 功能

  针对知识库场景中的短语搜索需求，新版本支持了 Match Phrase 功能，通过在倒排辅助表中维护分词在文档内的位置数组，在全文索引底层实现了短语精确匹配和带容错距离（slop）的模糊匹配。支持 ES 风格的 `match_phrase` 语法，包括 `slop` 参数控制分词间距离容忍度，同时也兼容老版本原有的 `MATCH AGAINST PHRASE MODE` 语法并提升性能。新增 `FTS_INDEX_TYPE=PHRASE_MATCH` 索引类型选项，默认开启位置信息存储，但支持用户关闭以节省存储空间。查询时通过专门的 Phrase Query 迭代器和 `slop` 计算算法实现前过滤优化，适用于 RAG 流程中算法处理后短语权重更高的文档搜索场景，增强混搜的精度和效率。
 - 搜索索引（Search Index）功能

  针对混搜场景下 JSON/ARRAY/MAP 等复杂类型的高效搜索需求，新版本支持了 Search Index 功能。相比传统函数索引和多值索引，Search Index 通过单一索引支持 JSON 字段所有路径的等值、包含、范围查询，解决 Ad Hoc 查询和 Schema-less 场景下的性能问题。Search Index 通过 `CREATE SEARCH INDEX` 语法创建，可配置 `include_paths`/`exclude_paths` 路径过滤和 `include_types`/`exclude_types` 类型过滤；新增 `PICK JSON_TYPE` 语法（如 `pick json_number`/`pick json_string`）精准筛选 JSON 标量类型，优化查询准确性。索引采用倒排表结构，支持 Index Merge 组合查询，一期仅支持堆表场景，为知识库平台等需要灵活 JSON 查询的业务提供高性能索引能力，提升混合搜索场景下的查询效率。
 - 混搜执行框架优化

  新版本针对 RAG 知识库等高阶混合搜索场景，提供统一的动态剪裁执行框架。该框架支持跨全文、标量、多值索引的统一 docid 剪裁和 block max score 剪裁能力，通过重构为可组合的 search operator 算子提供良好扩展性，支持 ES DSL 描述的多层 Boolean 查询语义。引入自适应执行策略，包括代价驱动的主迭代器选择、数据预取宽度优化、sort/lookup 策略选择以及稀疏剪裁/向量化执行策略切换，提升混合搜索性能。同时提供基于 Query Profile 的混搜诊断能力，支持分区粒度 profile 展示算子执行树结构及关键统计指标，帮助定位性能瓶颈。
 - 全文索引查询性能优化

  新版本在全文搜索 TopK 和增量数据场景进行了深度优化。通过实现存储层的轻量级 `advance_scan` 机制，优化 BM25 表达式计算参数，并改进增量数据查询算法，大幅提升了全文索引搜索的效率。在实际测试中，该优化在纯增量数据部分场景下可将 TopK 查询性能提升 80%，在混合数据场景下也能实现显著的性能改善。
 - 全文索引构建性能优化

  新版本优化了全文索引构建流程，解决了大规模数据全文索引构建耗时过长的问题。优化前，OceanBase 数据库全文索引构建主要瓶颈来自排序、写入和分词三大环节。新版本通过几项核心优化提升性能，优化构建流程，让倒排表和正排表只分词一次；通过主表扫描使数据按 docid 有序，避免全局排序；改进写入效率，利用内存中的 CONST 或 RLE 编码格式处理重复行，减少存储行数放大的影响；优化分词性能，使用 swiss hash map 减少 cache miss，分词 hashmap 只创建一次，并优化分词器实现。

  以 32 并行度为例，msmacro 数据集 space 分词的索引构建时间从基线 313.37 秒优化至 46.15 秒；mldr_en 数据集 space 分词的索引构建时间从基线 277.14 秒优化至 28.22 秒；mldr_zh 数据集 IK smart 分词器模式的索引构建时间从 5152.72 秒优化至 62.75 秒；`mldr_zh` 数据集 `IK` `max_word` 分词器模式的索引构建时间从 5463.48 秒优化至 70.63 秒。

#### 向量能力全面增强

- HNSW 向量索引增量优化

  针对 HNSW 向量索引增量数据过多导致内存膨胀、查询性能下降、重启加载慢的痛点，V4.6.0 版本引入 Segment 分段架构与自动内存管理机制：

     1. 将增量数据分为 Active/Frozen/Incr/Base 四层 Segment，支持冻结、持久化及后台合并。
     2. 通过 `ob_vector_index_active_segment_max_size` 与 `ob_vector_index_merge_trigger_percentage` 配置项控制 Active Segment 内存上限与合并触发阈值，平衡性能与资源消耗。
     3. 提供 `dbms_vector.flush_index`/`compact_index` 接口供手动触发向量索引的转储和合并。
     4. 新增 `GV$OB_HNSW_INDEX_SEGMENT_INFO` 视图增强可观测性。优化后，向量索引在频繁写入场景下内存占用可控、查询性能稳定、故障恢复更快，且保持用户接口和原来兼容，用户无需业务改造即可获得性能提升。
 - IVF 索引支持无主键表/堆表

  传统 IVF 索引要求表必须有主键，限制了在无主键数据上的应用。新版本扩展了 IVF 索引能力，使其可以应用于无主键表和堆表场景，使得企业能够对历史日志、用户行为等无主键数据构建高效的向量索引，为数据分析和搜索提供更多可能性。V4.6.0 版本适配了 `IVF_flat` 和 `IVF_pq` 索引在无主键表上的索引表结构，确保与 HNSW、全文索引等其他索引类型可以一起用于 Hybrid Search 场景。支持多分区场景，支持正确的 DDL、DML 和查询操作，部分场景下查询性能也有一定提升。
 - IVF 索引支持 HGraph

  针对大规模向量索引场景，当 IVF 聚类中心数量（`nlist`）超过 5000 时，传统 IVF 采用堆排序搜索会产生过高计算成本。新版本支持了在 IVF 聚类中心表上构建轻量级图结构（HGraph），通过图遍历算法替代暴力搜索，显著加快聚类中心搜索速度。在构建过程中，每一轮迭代对聚类中心构图加速，减少 `center_distance` 矩阵内存消耗，同时支持查询阶段快速定位候选聚类。保持高召回率且内存开销可控，尤其适用于 `nlist=5000~65000` 范围的大规模向量搜索场景。推荐用于 cosine 距离计算，L2 距离下预计算表内存消耗巨大不建议大 nlist 场景使用。
 - 向量索引召回率评估

  新版本提供了用户可查询的向量索引质量评估能力，以解决向量索引性能调优难题。通过 `DBMS_VECTOR` 包的`query_recall` 和 `index_recall` 接口，用户可主动计算特定查询或指定索引的近似搜索召回率，评估近似搜索结果与精确暴力搜索结果的匹配程度。后台自动采样用户查询，定期批量计算平均召回率并持久化至 `DBA_VECTOR_INDEX_RECALL_REPORT` 系统视图。该特性支持配置采样率、时间窗口和资源限制，为向量索引提供量化评估指标，方便索引调优。
 - 内存稀疏向量索引优化

  新版本包含了内存稀疏向量的几个关键优化：

     1. 稀疏向量解析优化，通过字符流解析替代正则表达式，性能提升约 8%。
     2. 稀疏向量重排机制从 vsag 库迁移到 observer 侧，减少内存使用。
     3. `pre-filter` 优化，高过滤场景下跳过不必要计算。
     4. 支持 `SINDI_SQ` 量化索引，降低存储成本。
     5. 新增稀疏向量索引信息视图 `[G]V$OB_SINDI_INDEX_INFO`。
     6. `DBMS_VECTOR` 系统包新增 `index_vector_memory_advisor` 子函数用于估算未建表的向量索引的内存使用情况，新增 `index_vector_memory_estimate` 子函数用于分析已建表的向量索引的内存使用情况。

  该特性提升了稀疏向量处理的查询性能和内存效率，并增强了向量索引维护和诊断的易用性。
 - 单列多语义索引支持

  目前如果要测试不同类型的语义索引（semantic index）的性能，只能在不同的列或者不同的表上创建不同语义索引来对比。为了方便用户对不同模型或参数下语义索引进行性能测试对比，新版本支持了在单列上创建多个语义索引的特性。新增 `vector_index` Hint 语法，允许用户通过 Hint 指定查询使用的语义索引和过滤方式（`pre_filter` 或 `post_filter`）。当在同一列创建多个语义索引时，查询必须使用 `vector_index` Hint 明确指定要查询的语义索引，否则会报错。仅能用于测试环境，需通过 `_enable_multiple_semantic_indexes_on_column` 参数开启，切勿在生产环境开启。
 - Document AI 能力补齐

  V4.6.0 版本引入 Document AI 特性，补齐了文档处理能力。包含三个核心功能：

     1. `LOAD_FILE` 表达式从外部存储读取文件，支持本地文件、HDFS、OSS、S3 等。
     2. `AI_PARSE_DOCUMENT` 解析复杂类型文档内容。
     3. `AI_SPLIT_DOCUMENT` 表函数切分文档内容并输出分段信息。

  再结合 `AI_EMBED`、`AI_RERANK`、`AI_COMPLETE` 和数据库混搜能力，可构建 "RAG all in One" 知识库解决方案。

#### HTAP 混合负载优化

- 列存副本与 F 副本统一入口

  为支撑 HTAP 场景中 TP 与 AP 流量混合、业务无法分离的场景，V4.6.0 版本新增列存副本自动路由功能，支持列存副本与 F 副本使用同一请求入口。通过智能识别 AP 查询特征（如弱读、并行执行或行存查询代价超过阈值），优化器自动将复杂分析查询路由到列存副本执行，实现 TP/AP 流量自动分流，提高查询效率和资源利用率。提供三种控制模式：

     1. `OFF` 关闭。
     2. `AUTO` 智能路由。
     3. `FORCE` 强制列存。

  新增系统变量 `ap_query_route_policy`、`ap_query_cost_threshold`、`ap_query_replica_fallback` 和 Hint 进行灵活的查询级控制。与现有 `ob_route_policy` 策略兼容，当设置为 `COLUMN_STORE_ONLY` 时优先生效。
 - 列存副本强一致性读支持

  传统分析查询通常能接受弱一致性读，弱读带来了低成本的性能扩展能力。但在一些对数据一致性要求极高的 HTAP 场景中，强一致性读才能保证分析结果的实时性和准确性。V4.6.0 版本新增了在列存副本上的强一致性读能力，当查询被自动识别为 AP 查询并路由到列存副本时，若使用强读模式（`ob_read_consistency='strong'`），系统通过 GTS 获取全局一致性快照版本，并检查列存副本回放状态。若副本未回放到所需快照，等待回放完成后再执行读操作，确保读取到与主副本完全一致的最新数据。相比弱读，强读提供更强一致性保证，支持需要事务级一致性的 AP 查询场景。
 - 列存表支持自动分区分裂

  老版本已支持行存表的自动分区分裂，新版本扩展支持了有主键列存表的自动分区分裂功能。该功能通过采样某个分区内存和SSTable 数据确定分割位点，将数据按行号拆分到两个目标分区。与行存表自动分区分裂功能共享相同的配置项（`enable_auto_split` 和 `auto_split_tablet_size`）和语法，但列存 SSTable 行数默认超过 100 万才能触发自动分区分裂。此功能有助于将大表数据自动分散到多个分区，提升 AP 业务查询写入性能并实现负载均衡。
 - PX 并行计划排队机制优化

  基于 `parallel_servers_target` 配置线程数限制并行执行 CPU 使用率的方法，配置不灵活、资源分配可能不优，所以 V4.6.0 版本提供了一种新的基于实时负载的并行执行排队策略。通过统计实时工作 PX 线程数，实现执行前基于实时负载排队和执行期动态调整并行度的能力。当实时线程数超过 `px_target_low_watermark` 低水位时线性降级并行度，超过 `px_target_high_watermark` 高水位时并行度降为 1，避免 CPU 打爆。新策略下，可以更好地解决大并行场景的资源调度不均衡和资源浪费问题。
 - PX 自适应任务划分

  新版本针对 SQL 并行执行扫描中出现的长尾任务现象进行优化，能够根据数据分布和系统负载动态调整并行任务的划分策略，提高并行执行的效率和资源利用率。尤其在列存表扫描场景中，当使用 Skip Index 快速过滤后，数据集中在少数 granule 中，其他 granule 快速消费完，剩余 granule 数少于 PX 线程时老版本会出现并行度下降和扫描长尾。新版本引入 PX 任务重均衡能力后，运行时检测剩余 granule 数量少于 PX 线程时，对剩余 granule 进行再次切分，使扫描任务更均衡，避免部分线程空闲而部分线程承担大量工作的情况，提升列存表并行扫描效率。
 - 增量数据查询性能优化

  LSM-Tree 架构基础上，OceanBase 数据库提供了基线数据按列存储、增量数据按行存储的存储模式，适用于数据实时高频写入且需要进行复杂分析的场景。但增量数据较多的情况下，查询性能可能会受影响。新版本通过支持对增量数据进行 Encoding 和 Skip Index，来优化增量数据的读取速度和利用数据块粒度的聚合统计信息下推表达式。TPC-H 100G 数据集，当表模式为 Delete-Insert 表且数据全部为增量数据时，热查询性能提升约 260%，冷查询性能提升约 150%。增量 Encoding 可通过租户级配置项 `default_delta_format` 或表级属性 `delta_format` 开启，增量 Skip Index 可通过租户级配置项 `default_skip_index_level` 或表级属性 `skip_index_level` 开启。

#### 查询优化器与执行器增强

- SQL 硬解析性能优化

  针对包含大量重复元素的复杂 SQL（如大 `IN`、大 `OR`、大 `INSERT` 等）硬解析内存使用过多的问题，新版本通过重构 SQL 解析过程中的数组数据结构实现内存优化。优化核心包括：

     1. 设计新的 `ObSqlArray` 替代 `ObSEArray`，降低内存开销。
     2. 去除 `auto_free` 机制，改用 `allocator` 显式构造避免内存膨胀。
     3. 取消预分配数组，降低初始内存占用。
     4. 调整扩容策略，按数据类型动态计算 `block_size`。

  解决空数组静态内存占用和动态扩容内存膨胀两大问题，显著提升复杂 SQL 硬解析时的内存使用效率。
 - 谓词推导能力增强

  新版本优化了 General 谓词推导（`IN`、`LIKE`、`!=`）逻辑，允许跨视图推导，同时通过规则决定不同类型谓词之间的推导关系。同时支持了去除 NLJ 无用冗余谓词，识别并去除在 NLJ 左支已执行过的谓词在右支重复计算的情况，特别是当右支为子查询或视图时，能够穿透子查询去除底层基表上的冗余谓词，减少不必要的计算开销。
 - 计划层下推能力增强

  V4.6.0 版本将 `Runtime Filter` 的生成从优化器一阶段移至二阶段，提升了计划的鲁棒性。通过版本控制移除了一阶段生成逻辑，在二阶段基于选定计划添加 `Runtime Filter` 作为补充，减少对统计信息的依赖。同时增强了有效 `producer` 的判断逻辑，从识别 `filter` 算子变为识别包含过滤效果的算子。`Runtime Filter` 支持跨 DFO 传输和更广泛的下推能力，能够穿透更多算子如 `Window`、`Group By`、`Set Operation` 等，并改进对等值连接条件的列推导，提升了数据过滤效率。

  同时，新版本也增强了 `Group By` 下推能力，解决了聚合算子智能下推的问题。采用后序遍历逻辑计划树，在计划生成阶段完成 `Group By` 下推，避免了代价验证的高开销。支持在 JOIN 节点将 `Group By` 分裂到两侧下推、处理聚合前 `Local Shuffle` 以提升 `sharding` 匹配度、以及智能的 `Group By` 放置决策机制。识别并下推 `Single Group By`，在保持有用 `sharding` 的同时优化查询性能，特别适用于星型模型等大数据量场景，减少中间数据传输量。
 - 公共临时表抽取优化

  V4.6.0 版本优化了 SQL 语句中的公共子表达式抽取逻辑。在同一复合 SQL 中，针对包含 `GROUP BY` 子句的多支相似查询，新版本支持更智能地识别出可以共享的公共计算部分。比如对于多个类似 `SELECT SUM(t1.c1), t2.c3 FROM t1, t2 WHERE t1.c1 = t2.c1 AND t2.c3 = 某值 GROUP BY t2.c3` 的查询，老版本只能抽取不带 `GROUP BY` 的公共表表达式，新版本能够将包含 `GROUP BY` 的完整计算抽取为公共临时表，各分支仅在公共临时表结果上按 `t2.c3 = 某值` 的条件过滤。各支共享相同的分组计算结果，减少重复计算，提升性能。
 - 向量赋值语法执行优化

  执行层新增实现 `AliasRef` 表达式，替代了原有的跨层直接引用表达方式。解决了 `UPDATE` 语句中使用 `SET (col1, col2) = (SELECT ...)` 这类向量赋值语法时的表达规范性问题，确保了向量赋值语法的正确执行和优化器阶段的规范性描述。
 - 多值索引适配 Index Merge

  为解决 JSON 多值索引在多个多值谓词查询场景下的性能问题，新版本在 Index Merge 路径中放开多值索引的支持，为每个多值谓词单独生成扫描节点，实现精确谓词抽取并减少表达式计算。同时支持将 `JSON_CONTAINS` 改写成多个 `MEMBER OF` 谓词，避免非精确谓词计算，提升多值索引查询效率，特别适用于 JSON 数组中包含多值查询条件的场景。
 - Join Order 选择算法优化

  当 SQL 查询需要连接多个表时（比如订单系统同时查用户、商品、物流等信息），不同的连接顺序会让查询速度相差巨大。之前版本使用迭代动态规划算法（IDP）进行 Join Order 枚举，确保选出最优的计划，但在表数据量特别多的情况下耗时较长。V4.6.0 版本新增一种启发式的排列枚举算法，能够更快地更少内存地枚举一个较优的计划，加快硬解析速度。并采用自适应双算法策略：对于小规模查询，使用精准的动态规划算法找到最优方案；对于复杂查询，则切换到高效的排列枚举算法，快速找到优秀的近似解。这个优化特别适合报表查询、数据分析等场景，能显著缩短查询计划生成时间，同时通过智能裁剪避免计算量爆炸。
 - Distinct 聚合查询性能优化

  针对包含多个 `distinct` 聚合的复杂查询场景，传统三阶段并行算法可能存在数据复制膨胀、内存占用高、容易触发落盘等问题。新版本引入多项优化：

     1. 用 `Expansion` 算子替代冗余数据复制，减少 `shuffle` 数据量。
     2. `Hash Distinct` 算子支持按 `distinct` 列分组独立构建哈希表，降低行长和计算开销。
     3. 支持 `filter distinct` 场景智能改写，将 `count(distinct if(...))` 改写为 `any_true+count` 组合，避免对同一数据列的重复复制。
     4. 优化传输编码，将无效 `NULL` 列压缩编码。该优化可显著减少内存消耗和磁盘 IO，避免数据膨胀导致的性能下降，尤其适用于大数据量下多 `distinct` 列聚合分析场景。
 - Hash Group By Limit Pushdown 优化

  针对 `GROUP BY ... LIMIT K` 查询场景中，`Hash Group By` 算子需计算全部分组可能导致的高内存和 CPU 消耗问题，新版本引入 `Limit` 下推优化。当哈希表中分组数量达到 `Limit` 阈值时，停止创建新分组，仅处理属于已存在分组的数据。通过将 `LIMIT` 值下压至 `Hash Group By` 算子，将算法复杂度从 `O(N)` 降至 `O(K)`，大幅减少无效计算和内存占用。经测试，在 1M 行数据、`Limit 10` 的场景下，查询性能提升 7-8 倍，`Hash Group By` 算子耗时降低 10 倍，显著减少大基数分组查询的资源消耗。
 - 函数计算性能提升

  V4.6.0 集中优化了一批函数的计算性能，包括 `approx_count_distinct`、`listagg ... rollup`、`string` 类型的时间提取函数、`cast string to datetime`/`date`、`sec_to_time`、`replace`、`hex`、`reverse`、`instr`、`locate`、`concat`、`lrpad`、`left`、`right`、`sign`、`exp`、`sha`/`sha2`、`aesdecrpt`、`crc32`、`from_base64`、位运算相关函数、IP 相关函数等，进一步加速了数据处理速度，满足实时计算业务对计算性能的要求。新版本也对向量化表达式框架自校验能力进行了增强，提升表达式计算的稳定性。
 - 窗口算子支持流式计算

  针对窗口函数计算需物化整个分区导致内存和 CPU 开销大的问题，V4.6.0 版本实现了完全流式执行。支持 `row_number`/`rank`/`dense_rank` 函数，特定窗口定义（`ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`）和特定规则下的 `first_value`/`last_value`/`nth_value` 和不带 `distinct` 的聚合函数，特定窗口定义（`ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING`）和特定规则下的 `first_value`/`nth_value` 等函数。通过重构窗口算子框架，优化分区编码、通用操作提取、临时内存生命周期管理等模块，在满足条件时无需暂存整个分区即可逐行计算并输出结果。当分区键基数小且并发度高时，结合 `range distribution` 优化实现并发执行。
 - 系统变量加载优化

  新版本对 `inner session` 初始化时系统变量加载性能进行了多维度优化。老版本每次创建 `inner session` 时都需加载 800+ 系统变量默认值，存在字符串比较、长度计算和类型转换等性能热点。新版本采用混合加载策略，预加载 6 个核心变量（如 `character_set_connection`、`sql_mode` 等）和 50+ 个影响计划的 `INFLUENCE_PLAN` 变量，其他变量按需懒加载。同时优化底层实现，通过 `id` 索引加速查找，并实现专用的快速类型转换器，避免了通用框架的开销。在复杂查询场景测试 `case` 中，`init_session_info` 占比从 34% 降至 3%，执行时间从 100 秒降至 55.889 秒，优化效果明显。
 - Hive/Iceberg 外表查询性能优化

  新版本针对 Hive/Iceberg 表中使用字典编码的字符串列进行谓词过滤加速。通过在字典码层面进行过滤，避免了不必要的字符串解码开销，采用字典值一次性复制多行共享的内存优化机制，支持白盒和黑盒两种过滤模式。在 TPCH Q19 等测试场景中，字典码层面的整数比较替代字符串比较能显著提升性能，该优化特别适用于高选择性过滤场景，当列的唯一值数量远小于总行数时效果最佳。
 - Parquet/ORC 文件外表支持 Bloom Filter

  新版本外表查询执行引入 Bloom Filter 索引支持，用于加速 Parquet/ORC 文件的等值查询过滤。通过利用文件格式内置的 Bloom Filter 元数据，当查询条件为 `col = 'xxx'` 等值谓词时，可以在读取数据前快速判断目标值是否可能存在于当前数据块中。该实现采用惰性加载策略，仅在 `min-max` 范围无法确定过滤时才加载 Bloom Filter。该优化特别适合高基数列（如 UUID、用户名）的等值查询场景，可有效减少不必要的 IO 读取。
 - 外表 CSV 格式并行解析

  V4.6.0 版本新增单个 CSV 文件并行解析功能，来提升单文件大数据量导入和外表查询效率。基于赌博界定法结合全量扫描界定法实现智能文件切分：当文件数小于等于线程数两倍时，系统根据数据格式复杂度自动选择并行解析策略。新增 `FORMAT` 选项（`PARALLEL_PARSE_ON_SINGLE_FILE`、`PARALLEL_PARSE_FILE_SIZE_THRESHOLD`、`MAX_ROW_LENGTH`）灵活控制并行行为。通过 `GI` 算子多状态转换机制和 SQC 协调，在保持数据完整性的前提下实现高效并行处理。同时 CSV 文件外表新增 `SNAPPY` 压缩算法支持。
 - ODPS（Maxcompute） 大分区多机器并行下载优化

  针对 ODPS 外表导入场景中单一分区数据量大、单机下载受限于带宽的问题，V4.6.0 版本实现多机器并行下载同一分区功能。通过 QC 阶段并行获取分区物理大小识别大分区，SQC 阶段动态细粒度切分任务，利用 ODPS Tunnel API 的事务一致性特性，在 SQC 中反序列化 Session 实现多机并行读取。优化任务调度算法，优先处理大分区并保证负载均衡，减少初始化开销，同时保持与单机并行兼容。解决分区倾斜场景下载瓶颈，充分利用集群网络带宽提升导入性能。

#### 事务与存储引擎增强

- 小事务转储状态优化

  针对高频小事务场景，通过优化事务状态回填机制，加速数据清理效率。避免长事务阻塞数据回收，即使有事务未提交，系统也能正常清理已完成事务的数据，提高读写性能。
 - 迁移复制支持分区分裂宏块重用

  针对迁移、复制和物理恢复场景中源端存在多版本 Major SSTable 或分区分裂重用的宏块，目的端仍需重复拷贝导致空间和带宽浪费的问题，V4.6.0 版本优化了迁移复制宏块重用的能力。通过构建重用映射表、顺序调度分裂 Tablet 迁移、修改宏块拷贝 RPC 等机制，在迁移目的端重用于分裂源端 Major 宏块及多版本 Major SSTable 间的共享宏块。新增 `TabletGroupGeneratorDag` 实现动态依赖调度，确保分裂源端先于目的端迁移。该特性有助于减少块拷贝量，提升迁移效率，降低存储空间占用。
 - Append-Only 表

  `append-only` 是 OceanBase 数据库继 `partial-update`、`delete-insert` 后新增的表更新模型。`append-only` 表仅允许 `INSERT` 操作，禁止 `UPDATE`、`DELETE` 及可能涉及更新（如 `REPLACE INTO`）的操作，数据写入后不可修改。该特性适用于金融交易记录、日志、IoT 数据监控等需要数据不可变的场景，满足审计合规、高效追加和高性能查询的要求。建表时通过 `MERGE_ENGINE = append_only` 语法创建，在写入顺序上不强制要求 rowkey 递增，可结合 TTL（Time To Live） 进行过期数据清理。
 - TTL（Time To Live）

  新增 TTL（Time To Live） 特性，该特性是基于合并机制的数据过期删除功能，为 SQL 模式的关系表定义过期策略。与传统 KV 模式表通过后台线程写 `DELETE` 行方式不同，TTL（Time To Live） 在合并时异步进行数据删除，不占用 Clog 和写入带宽，删除信息仅在 OceanBase 数据库内部识别，不向下游系统同步。用户可通过配置 `enable_ttl` 开关、设置 `ttl_duty_time` 时间点或手动触发 TTL 任务。系统在 TTL 任务触发时，通过事务同步标记删除规则到 MDS，合并时根据回收版本号进行数据过滤和物理删除，支持 `DELETE_INSERT` 和 `APPEND_ONLY` 两种表模式，目前仅支持基于隐藏列 `ora_rowscn` 的过期策略。

#### PL 引擎增强

- 系统包执行框架性能优化

  新版本优化了系统包执行框架，避免对 PL 符号表的 `paramstore` 进行转存和深度拷贝。在 100 万数据量测试场景下，以 `select count(utl_raw.CAST_TO_RAW(c1)) from t2` 为例，执行时间从 6.05 秒降至 5.17 秒（提升 14.5%）；以 `select count(dbms_lob.getlength(c1)) from t2` 为例，执行时间从 4.89 秒降至 3.89 秒（提升 20.4%）。
 - PL 执行框架性能优化

  新版本优化了 PL 入参为基础类型场景下的 `column convert` 开销；支持预计算参数默认值和浅拷贝常量参数；通过消除内存上下文 、避免每次刷新 schema guard 、取消列转换、预分配参数存储内存等多项内部调用框架优化，`inner call` 性能提升 3%-11%；通过检查返回行后存入结果以避免额外深度拷贝、在顶层 PL 上下文中缓存租户配置等优化提升循环执行性能；将 `sys_var_in_pl_cache_str_` 移到 Session 级别缓存，消除 PL 缓存获取时重复序列化的热点；优化多层 `package routine` 和 `subprogram routine` 执行框架，通过顶层 pl context 缓存和避免不必要的执行上下文创建，性能提升24%-39%；在 Session 级别缓存执行环境信息，避免每次加载系统变量，性能提升 5%；优化多层 PL 执行框架，顶层 PL context 缓存执行产物、关闭全链路追踪、优化表达式清理逻辑、多层 PL 共享 `vslice allocator`，性能提升 44%-75%。
 - PL 内表达式计算性能优化

  解决 `package` 变量读写长路径问题，细化数据类型转换逻辑，消除赋值语句、默认值生成、复杂类型深拷贝中的不必要转换，移除表达式计算时 `clear expr flag` 逻辑。PL 内表达式计算性能提升 12%-26%。
 - FORALL 批量执行适配更多场景

  新版本增强了 PL/SQL 中 `FORALL` 语句的功能，支持了动态 SQL 批量执行、`indices of collection` 和 `values of index_collection` 等高级用法，同时支持 `collection` 成员为复杂类型（如 PL 扩展类型、JSON、几何类型等）。该优化大幅提升了 PL/SQL 中批量 DML 操作的性能，使得循环执行的场景能够利用 SQL 引擎的 `arraybinding` 功能进行高效批量处理。
 - DBMS_RANDOM 系统包性能优化

  优化 `dbms_random` 系统包性能，通过消除不必要的表达式计算、简化 package 变量访问路径、优化执行框架、消除非必要的 column convert 和 UDF 调用等 8 项改进措施，部分场景下性能提升 42%。
 - UDF 参数为常量时支持抽取 Query Range

  新版本支持了为带有常量参数的 `non-deterministic` UDF 抽取 Query Range，使 `col = udf()` 的场景可以走索引过滤，显著提升对应场景下的 SQL 计算性能。
 - PL 内事务支持异步提交

  新版本通过在协议层新增异步提交判断逻辑，管理 PL 事务提交状态，支持了在分布式事务场景下让事务提交与 PL 执行并行处理，实现了存储过程内的事务提交异步化。有效解决了 PL 层频繁同步提交场景导致的线程占用问题，提升系统吞吐量。复杂事务场景下性能提升可达 39%，对于高并发 PL 业务有明显性能收益。
 - 流式游标预取优化

  记录 SQL 审计和切换游标环境会导致的游标性能受影响，新版本通过在内存中批量预取数据来减少 SQL 审计记录和游标环境切换开销。该优化显著提升了流式游标的性能，游标数据量大于等于批缓存数量（100 行）时，性能提升 44%-54%。需要通过 `_enable_streaming_cursor_prefetch` 配置项开启该优化。
 - 流式游标支持读取未提交事务

  Oracle 模式下流式游标读取未提交数据后事务提交会导致游标失效，和 Oracle 行为不兼容。新版本优化了这个场景的行为，通过在流式游标打开时判断是否读取未提交数据并进行标记，当事务提交时将受影响的流式游标转化为非流式游标，从当前游标位置开始将数据 `load` 到本地内存，避免了与 Oracle 行为不一致导致的 "fetch out of sequence" 错误。
 - Trigger 性能优化

  优化触发器执行路径，引入直接获取触发器包体机制，新增 `get_cached_package_body()` 方法避免不必要的包规范查找，减少触发器执行时的模式操作开销，进而提升触发器的执行性能。
 - 动态 SQL 执行性能优化

  新版本进行了动态 SQL 预编译优化，通过优先检查 PS 缓存查找预编译语句，避免重复创建执行计划，添加参数和表达式计数器提升缓存匹配精度，进而优化动态 SQL 执行性能。
 - PL 内动态 SQL 支持参数化

  老版本 PL 仅对 `CALL` 语句参数化，不会对 PL 内部 SQL 进行参数化。PL 内部 SQL 因参数字面量不同导致 SQL ID 不同，无法利用 Plan Cache，可能出现大量缓存计划不能共享，Plan Cache 中的计划频繁淘汰，导致PL 请求硬解析、RT 增大的问题。新版本采用 Fast Parser 快速参数化技术识别常量并替换为 "?" 占位符，统一使用参数化 SQL 和 `param_store` 进行 Plan Cache 匹配、计划生成和执行，使相同逻辑的 SQL 生成统一 SQL ID。同时还处理了 `IS NULL` 等特殊语法防止误参数化，确保语法正确性。通过此优化，高并发场景下 PL 内部 SQL 能有效复用 Plan Cache，减少计划生成开销，提升性能。
 - select into from dual 语句改写为 PL 赋值语句

  针对 PL/SQL 中 `select into from dual` 语句，新版本支持通过转换为赋值语句来避免 SQL 执行开销，通过系统变量 `PLSQL_CAN_TRANSFORM_TO_ASSIGN` 控制优化开关。性能提升约 84%，可显著降低此类语句的执行成本。

#### 兼容性与功能性增强

- MySQL 模式支持 Session 级临时表

  V4.6.0 版本在 MySQL 模式下新增了 Session 级私有临时表功能，支持创建、修改、删除临时表以及基于临时表创建索引等功能，提升 MySQL 迁移平滑度。
 - Oracle 模式全局临时表性能优化

  V4.6.0 版本对 Oracle 模式的事务级和 Session 级全局临时表进行了设计重构，引入 `temporary tablet`，用于存储临时表的数据，在会话生命周期结束时，直接释放 `temporary tablet`，达到优化性能目的。
 - MySQL Union Distinct RCTE

  MySQL 8.0 支持了 CTE 的 Recursive Union All 及 Recursive Union Distinct 功能。OceanBase 数据库从 V3.2.3 版本开始支持 MySQL 模式的 Recursive Union，但仅支持 Recursive Union All，V4.6.0 版本扩展兼容了 MySQL Recursive Union Distinct 功能，保证输出数据的唯一性。同时，新版本还加强了 Recursive Union All 功能，支持可使用内存不足时进行数据落盘。
 - Oracle 模式下 PS 二合一协议支持 Prepare 阶段带参数

  PS 二合一协议下，新版本支持在 Prepare 阶段带参数进行解析，解决由于参数信息未知导致的 Oracle 模式下类型推导问题。升级场景默认保持老版本行为，遇到相关场景的问题时，可通过开启 `_prexec_prepare_with_params` 打开该特性。
 - 分区交换支持一级与二级分区表交换

  新版本扩展支持二级分区表与一级分区表之间的分区交换。目标表必须为二级分区表且一级分区类型为 `RANGE` 或 `LIST`，源表必须为一级分区表且其分区类型与目标表对应二级分区完全一致。通过 `ALTER TABLE target_partition_table_name EXCHANGE PARTITION first_level_partition_name WITH TABLE origin_partition_table_name WITHOUT VALIDATION;` 语法实现，提供更灵活的数据分区管理能力，适用于大数据量场景的快速数据迁移。需要注意的是，交换后相关表的统计信息会失效，需重新搜集。
 - JSON 类型列转换支持

  新版本支持了 JSON 类型列转换为 `text`/`mediumtext`/`longtext`，方便运维。
 - Oracle 模式 DBMS_SCHEDULE 功能增强

  新版本 `DBMS_SCHEDULER` 的 `repeat_interval` 选项新增 `BYMONTH`/`BYYEARDAY`/`BYMONTHDAY`/`BYDAY`/`BYHOUR`/`BYMINUTE`/`BYSECOND` 字段来指定 `Job` 运行时间，提供更灵活的定时任务配置方式。同时，`GBK` 字符集下，`DBMS_SCHEDULER` 中定义的字符串类型参数扩展支持中文名称。
 - Oracle 模式下空间函数扩展

  Oracle 模式新增 `SDO_CONTAINS`、`SDO_ANYINTERACT`、`SDO_AREA`、`SDO_UTIL.GETVERTICES` 几个空间几何函数，覆盖空间包含判断、相交判断、面积计算以及几何顶点提取等常见 GIS 操作。适用于空间数据分析、地理信息计算、地图渲染、几何质量校验等场景。
 - 物化视图特性增强

  新版本全面增强了物化视图功能。主要包含：

     1. 增量刷新支持外连接、`UNION ALL` 和单表非聚合模式。
     2. 物化视图日志支持加列及视图重命名。
     3. 新增嵌套物化视图级联刷新能力，解决多层物化视图依赖刷新问题。
     4. 支持 `AS OF PROCTIME()` 语法指定维度表不刷新，提升增量刷新效率，并支持多表连接的增量物化视图引用声明为 `AS OF PROCTIME()` 的普通视图。
     5. 聚合增量刷新支持 `min`/`max` 函数及非基本列参数。
     6. 支持基于无主键的增量物化视图嵌套和 `LEFT JOIN` 聚合增量刷新。
     7. 新增 MLOG 自动化管理，自动创建和清理冗余 MLOG 表。
     8. 开放全量刷新物化视图对 UDF 的支持。
     9. 新增 `Minimal` 模式开关提升列存宽表刷新性能。
     10. 除了等值比较，物化视图改写还新增了对范围谓词（包括 `<`、`<=`、`>`、`>=`、`=`、`BETWEEN AND`）的区间比较逻辑，能够判断物化视图的查询范围是否完全包含查询语句的范围。

  多项增强显著提升了物化视图的灵活性和性能，支持更复杂业务场景。
 - Iceberg V3 格式适配

  V4.6.0 版本扩展支持最新的 Iceberg V3 格式，实现了查询 Iceberg 表过去某个快照数据的功能（Time Travel），即数据被删除或修改后也支持基于 branch 名、tag 名、snapshot id 或时间戳查询历史数据。同时也适配了 Iceberg V3 版本引入的 Deletion Vector 特性，读取 Iceberg 表过程中支持从 deletion vector 中获取被标记删除的行号，并在查询结果中移除，确保查询的准确性。
 - Iceberg Insert 功能适配

  新版本支持了通过 `INSERT INTO catalog.db.table SELECT ...` 语法将数据写入 Iceberg 表，写入的文件类型支持 `parquet` 和 `orc` 格式，由 `write.format.default` 参数控制（默认 `parquet`）。支持串行和并行写入模式，通过 Hint 中的 `parallel` 参数指定。该功能暂时仅支持 V2 格式 Iceberg 表，不支持分区表写入，也不收集 `column size`、`min`/`max`、`null counts` 等统计信息。与 `select into parquet`/`orc` 功能保持了数据类型一致性，为数据湖集成提供了基础写入能力。
 - Rest Catalog 协议支持

  新增 REST Catalog 支持，通过标准化的 HTTP REST API 接口访问 Iceberg 表。OceanBase 数据库内置 HTTP 客户端连接池，支持配置最大连接数、超时时间和保活时间等属性，降低连接创建开销。同时提供监控视图 `[G]V$OB_EXTERNAL_CATALOG_CLIENT_POOL_STAT`，实时观测 Catalog 客户端池状态。通过 `CREATE EXTERNAL CATALOG` 语法可创建 `REST` 类型 Catalog，支持配置服务器地址、认证方式等参数，完善 Iceberg 数据湖访问方式。
 - Parquet/Orc 文件读写支持复杂数据类型

  新版本增加了对 Parquet/ORC 文件格式中复杂数据类型（`Array`、`Map`、`JSON`）的读写支持。包含数组（`Array`）、映射表（`Map`）或嵌套 `JSON` 的文件，不需要复杂的预处理，可以直接通过文件外表或临时外表导入，也能把查询结果以相同格式导出。

#### 系统性能提升

- 国产化大规格机器场景下的性能优化

  对海光、鲲鹏等国产化 CPU 环境下典型场景的 CPU 热点进行优化，包括优化 PDML 和复制表查询性能。在大规格 256c 环境中高并发 PDML 性能提升25%，并减少了非 PDML 场景的内存消耗；业务连 Follower 查复制表的性能提升 14 倍，从 2w QPS 增长到 27w+，与直接连 Leader 查询的 30w QPS 之间差距不到 10%。在 32c 的小规格环境上述优化对性能同样存在提升。
 - 库函数内存分配优化

  新增基于 `mimalloc` 算法设计 lock-free 内存分配器，专门针对 OceanBase 数据库集成多样化外部库时的小内存分配性能瓶颈进行优化。该分配器采用分片式内存块设计、延迟空闲回收策略和低锁竞争优化，实现线程本地小对象分配性能突破。核心架构包括线程局部 Allocator、按 SizeClass 分类管理、快慢路径分配机制，其中快路径接近 O(1) 复杂度，慢路径批量处理跨线程释放的内存。在单线程场景下相比 `glibmalloc` 性能提升约 168%，16 线程本地分配场景性能提升约 180%，为大规模高并发场景提供更高效的内存管理支撑。

#### OBKV 数据模型增强

- OBKV 支持弱读和就近机房读

  OBKV 新增弱读和就近机房读特性，支持从非主副本读取数据以减少主库负载，并优先路由到离客户端最近的机房副本，降低网络延迟。该特性适用于 OBKV-HBase 2.5.0+ 和 OBKV-Table 2.3.0+ 的客户端版本，支持 `follower_first` 和 `follower_only` 两种路由策略，可通过配置文件或代码灵活配置全局或语句级策略。
 - OBKV TTL 任务支持索引扫描及限速

  OBKV TTL 任务新增索引扫描功能，允许用户通过指定索引来加速 TTL 数据清理过程。传统的主键扫描需要读取完整行来判断是否过期，而通过建立包含过期列的本地索引，可以显著降低 IO 开销并提升扫描速度。该功能通过 `KV_ATTRIBUTES` 中的 `TTLScanIndex` 参数启用，支持 Table 和 Hbase 两种模型。索引必须是本地索引且包含 TTL 相关列，不支持全局索引。

  同时，OBKV TTL 任务新增了限速功能，通过设置 `kv_ttl_delete_max_ops` 参数控制 TTL 任务删除操作的每秒最大吞吐量。当租户资源有限或前台请求压力大时，TTL 任务可能影响系统性能，限速功能可以有效控制其对 CPU 和 clog 写入带宽的占用。默认值为 `0` 表示不限速，设为大于 0 的值可精确控制删除操作速率。该功能通过结合 `ttl_thread_score` 参数分配每个分区任务的吞吐限额，确保系统资源得到合理分配。
 - OBKV-HBase 监控项完善

  新版本优化了 OBKV-HBase 服务端监控体系，主要改进包括：区分 HBase Get 和 Scan 操作的监控指标，区分单 `Put`/`Delete` 与 Batch 操作的监控指标。新增 `TABLE_API_HBASE_CHECK_AND_MUTATE`、`TABLE_API_HBASE_SCAN`、`TABLE_API_HBASE_GET`、`TABLE_API_HBASE_BATCH_PUT`、`TABLE_API_HBASE_BATCH_DELETE`、`TABLE_API_HBASE_BATCH_GET`、`TABLE_API_FAILED_OP` 7 种监控项类型，客户端可通过 `MetricsExporter` 或 JMX 接口获取 QPS、RT、P99 等详细性能指标，以支持更精准的性能监控与分析。该特性需要搭配新版本 OBKV-Table 2.3.0+ 和 OBKV-HBase 1.5.0+/2.5.0+ 客户端使用。
 - OBKV-HBase 热点 key 查询优化

  OBKV-HBase 的查询采用全范围扫描策略, 先扫描所有 `qualifiers` 的数据再进行过滤。这种方式在服务端会产生大量冗余扫描和处理开销, 特别是当对一个宽行或者多版本的行查询只涉及少量 `qualifiers` 时, 延迟问题尤为明显。V4.6.0 版本新增 `HBASE_HTABLE_HOTKEY_GET_OPTIMIZE_ENABLE` 配置用于指定在执行 `Get` 操作时是否启用热点 `Key Get` 优化功能。当启用时，查询会在服务端基于 `rescan` 技术进行优化处理，以提升热点 Key 场景下的查询性能。

#### OBCDC 增强

- OBCDC 支持同步表级恢复后的增量数据

  表级恢复是一种跨租户的 offline DDL 操作，传统方案中 OBCDC 无法获取隐藏表关联的源表信息，导致同步异常。新版本支持了过滤表级恢复过程中的 DDL，防止 OBCDC 异常退出；并在表级恢复完成时，observer 端添加 `TABLE_RECOVER_END` 类型的 DDL 操作记录最终表名，OBCDC 据此进行黑白名单匹配。该特性适用于表级恢复完成后的增量数据同步，确保表级恢复场景下 OBCDC 的稳定运行。
 - OBCDC 支持虚拟生成列

  V4.6.0 版本支持了在 OBCDC 侧实时计算 MySQL 模式下的虚拟生成列值，确保下游兼容 MySQL Binlog Service。该功能通过新增 `enable_output_virtual_generated_column` 配置项控制，当开启时，OBCDC 会基于 SQL 模块提供的计算 API，结合从数据字典获取的虚拟生成列依赖元信息（包括 Session 固化变量、列默认值等），在格式化阶段实时计算虚拟生成列值并回填输出。该方案保证了虚拟生成列的计算正确性和与 MySQL Binlog 的行为兼容。

#### 安全与可靠性增强

- 无业务侵入的列加密功能

  新增敏感列数据保护功能，数据库管理员可以在表上创建列级别的数据保护规则。用户执行 `SELECT` 操作，且投影的列中包含了加密列时，服务端会检查用户是否具有明文访问权限，有则包含此加密列的投影表达式会正常返回明文结果，否则会按照数据保护规则描述的方式加密后再返回给用户。
 - caching_sha2_password 认证支持

  MySQL/Oracle 两种模式下均新增 `caching_sha2_password` 认证方式，可在创建用户时指定，提供了更安全的密码保护机制。需配套 ODP 4.4.0 版本使用。
 - 备库读功能优化

  新版本通过优化事务状态推断机制，将原本需要每个副本独立收集参与者状态的方式，改为由协调者 Leader 统一收集和缓存，显著减少消息交互次数。同时引入重试机制，在副本落后时自动转发请求至其他副本处理，以避免阻塞或对事务状态进行错误推断。
 - 备份校验功能增强

  V4.6.0 版本增加物理备份校验功能，以检查备份和归档数据的完整性与可用性。通过该功能，用户可以在不执行实际恢复操作的情况下，主动校验备份集（Backup Set）和归档日志（Archive Log）是否存在文件缺失、物理数据损坏或逻辑不一致等问题。提供 BASIC（文件列表完整性校验）和 PHYSICAL（物理数据正确性及逻辑校验）两个校验层级，满足不同耗时和深度的校验需求；支持对整个备份路径、指定备份集、指定归档Piece进行校验，且支持跨集群指定路径校验。
 - 大查询资源限制

  针对长时间运行的大查询可能占用过多 CPU 资源，影响小查询响应的问题，新版本进一步优化了大查询资源限制功能。老版本已经支持了执行前基于 plan cache 历史耗时预判，将预估大查询移入大查询资源组重试；V4.6.0 版本新增一种触发路径，通过执行期间监测实际耗时，超过阈值后线程自动换入大查询资源组来进行限流。大查询资源组使用 `cgroup` 控制 CPU 使用率，默认为 30%，避免大查询饿死新请求。当大查询资源组线程数超过租户最大线程数一半时不再接收新的大查询，确保默认资源组有足够资源处理小查询，实现大小查询共存时优先保障小查询性能。可通过 `_large_query_cpu_quota_adjustment_step` 修改大查询 CPU 调控步长来控制，参数越大限制越迅速，但可能造成大查询 QPS 震荡；参数越小，QPS 越稳定，但限制作用迟缓。请谨慎测试使用。

#### 运维与管理增强

- SQLSTAT 能力增强

  为解决 SQLSTAT 与 Plan Cache 共享内存导致无执行计划 SQL 占用大量内存的问题，重构 SQLSTAT 存储架构。采用三级存储方案：

     1. Physical Plan 上缓存最近 N 次执行统计。
     2. 全局 SQLSTAT HashMap 独立管理生命周期。
     3. 攒批更新减少哈希表访问开销。

  支持 SQLSTAT 独立淘汰机制，避免与 Plan Cache 相互影响。新增后台线程定期检查内存使用，超过上限淘汰最久未使用 SQLSTAT。保留物理计划 SQLSTAT 指针缓存，执行完成时累加统计数据到全局 HashMap，解决数据统计不完整和内存争用问题，确保 SQL 执行性能统计的准确性和连续性。
 - ASH 数据完整性增强

  针对网络队列大量积压导致 ASH 缓冲区被写爆、诊断信息丢失的问题，新版本提供了一种基于压缩的 ASH 数据完整性增强机制。通过租户 id 和 pcode 来聚合队列积压请求，以压缩 ASH 写入量，避免单个请求写入多条记录。采用滑动窗口平均算法动态检测写入速度，当过去 N 秒平均写入量超过缓冲区容量阈值时自动开启压缩，低于阈值时关闭。ASH 新增 `weight` 列和聚合标志列，确保聚合列数据能完整落盘到 WR 表，避免采样失真。以此来解决高并发场景下 ASH 诊断信息丢失问题，为故障排查提供更完整的 Session 历史数据，增强系统可观测性。
 - 等待事件细化

  等待事件是性能诊断不可缺少的指标，之前版本上 OceanBase 数据库内部很多等待事件归类到了默认等待事件，难以根据等待事件名称定位到具体问题。新版本细化了默认等待事件，大多使用专用的等待事件替代，以便提供更精确的性能问题诊断能力。
 - Plan Cache 诊断增强

  新版本针对计划缓存未命中问题提供了系统化诊断能力，简化了诊断流程。在计划匹配过程中记录详细的未命中原因，包括 Cache Node 不存在、参数类型不匹配、Schema 不匹配、参数类型不匹配等 14 类问题，并将信息存储在 `[G]V$OB_PLAN_CACHE_PLAN_STAT` 视图新增的 `create_reason` 字段中，同时新增 `cache_node_id`、`pcv_id`、`plan_set_id` 等字段，帮助用户快速定位计划未命中根因，降低运维难度。
 - Plan Cache 内存管理优化

  针对 Plan Cache 模块内存分配问题，将内存判断标准从 `mem_hold`（页面占用）改为 `mem_use`（实际使用）。老版本 VOS 按 8KB 页分配内存可能导致内存碎片，当 SQL STAT 等诊断对象占用大量内存并存在碎片时，即使实际内存使用量较低，`mem_hold` 也可能达到上限，导致 Physical Plan 无法加入缓存而触发 LRU 淘汰。该优化确保更准确反映 Cache 对象内存大小，避免因内存碎片导致的缓存机制失效问题。
 - SQL Audit/Plan Monitor 查询效率提升

  通过引入晚期物化（late materialization）技术提升 `[G]V$OB_SQL_AUDIT` 和 `[G]V$SQL_PLAN_MONITOR` 系统表查询性能。老版本因不支持 `filter pushdown` 导致需要投影所有列后才能进行过滤计算，新版本在 `code generator` 阶段生成下压的 `pushdown filter`，执行时先投影参与过滤的列进行预过滤，再投影完整 `output` 列。该优化在 `trace_id` 等值查询等场景中显著改善了系统表查询性能。
 - LOB 一致性校验和恢复

  LOB 数据在主表与辅助表分离存储场景下，可能存在因异常导致数据不一致的风险。新版本提供完整的一致性保障方案，支持定时或手动触发主辅表一致性校验，检测三类异常（主表存在辅助表缺失、辅助表存在主表缺失、数据长度不匹配）；提供 `dbms_lob_manager` 系统包进行数据修复、任务控制及进度监控；集成 `resource manager` 支持对 LOB 一致性校验任务进行资源限制，防止后台扫描影响业务性能；新增 `DBA_OB_LOB_CHECK_TASKS` 和 `DBA_OB_LOB_CHECK_EXCEPTION_RESULT` 视图实时展示任务进度与异常详情，来解决 LOB 数据不一致导致的查询失败和磁盘膨胀问题。
 - DROP/PURGE DATABASE 性能优化

  目前 `DROP DATABASE` 操作为原子执行，期间加表锁和写内部表都是串行执行，表数量较多场景下可能会超时失败。新版本支持了通过异步并行删表来提升性能，需修改 `_enable_atomic_drop_database` 配置项为 `False` 开启，开启后会采用非原子方式删除数据库，删除失败时，不会回滚已经被删除的 `table`，请谨慎使用。另外对于带回收站场景的 `PURGE DATABASE`，也支持并行删除 `__all_recyclebin` 中的表。优化后性能提升明显，6000 张复杂表场景性能提升 7 倍（56 秒），2w 张复杂表场景性能提升 14.5 倍（101 秒）。
 - 异构 Zone

  OBserver 的租户支持至多拥有两种不同的 `UNIT NUM`，为 OBServer 的运维能力和扩缩容能力带来了提升。此前 OBServer 受限于同一租户各 `ZONE` 的 `UNIT NUM` 必须相同，当遇到故障且没有机器替换时，需要将所有 ZONE 都降低 `UNIT NUM`，扩大了运维范围；此外，扩缩容场景可以利用该能力在 `Follower` 副本先行操作，然后切换 Leader 至扩缩容完成的 `ZONE`，实现更平滑的扩缩容。
 - 窗口合并（Window Compaction）

  传统租户合并（Major Compaction）通过全局一致快照点确保数据一致性，支持主表索引表校验和主备库校验，提供了强一致性保障。然而其强制性全局合并策略在增量数据增多、百万分区、列存场景下暴露了合并时间不可控、资源消耗过高的问题，尤其当业务数据量增长后，合并可能会侵入业务高峰期。

  为此，V4.6.0 版本引入窗口合并（Window Compaction）新特性，在 `DBMS_SCHEDULER` 中预置 `DAILY_MAINTENANCE_WINDOW` 定时任务，允许用户在指定时间窗口（默认 2:00-8:00）内按需调度合并。该特性仅对有增量数据或满足条件的分区发起合并，并按优先级（考虑增量行数、表热度、距离上次合并天数等因子）进行调度，窗口结束后立即停止。支持配置 `enable_window_compaction` 切换合并模式，配合 `SET_THREAD_COUNT()` 设置专属合并线程数，还可配置专用资源管理计划实现合并时间和资源使用的精准控制，避免影响业务高峰期性能。
 - 死锁检测优化

  OceanBase 数据库提供了 `CDB/DBA_OB_DEADLOCK_EVENT_HISTORY` 视图用于查询数据库中发生的死锁事件及参与死锁事件的环路节点信息，但缺少环路上 `holder` 对应的 SQL 信息记录，影响用户诊断。新版本在此基础上丰富了死锁检测的视图信息，补充 `visitor` 对应的 `session id`，申请资源所在的机器、日志流、Tablet 地址等信息，并记录了事务发生死锁后当前正在执行的 SQL、持锁的 SQL 及请求时间，方便死锁事件诊断。

### 兼容性变更

#### 产品行为变更

| **功能** | **变更说明** |
| --- | --- |
| OBKV-HBase 时序模型增加限制 | V4.4.1 版本开始支持时序模型，基于 OBKV-HBase 模型透出。但 HBase 的很多接口在时序模型是不生效、没有意义的，新版本定义了时序模型的功能范围和行为限制。时序模型面向监控、物联网、车联网等写多读少场景，必须开启分布式开关。该模型不支持多列族、TimeToLive 和 Cell TTL 参数，并禁用了部分 HBase 接口。在数据操作层面，仅支持 Put、Put、Get、Scan 等核心接口，不支持 `Delete`、`Append`、`Increment` 等操作。`Get` 和 `Scan` 操作限制了参数设置，但开放了 `TimeRange`、`setLimit`、`setCaching`、`setMaxResultSize` 等必要功能，以满足时序数据的查询需求。这些限制确保时序模型的高效性和稳定性，为时序场景提供专用的数据访问接口。 |

#### 配置项变更

| **配置项** | **变更类型** | **变更说明** |
| --- | --- | --- |
| default_delta_format | 新增 | 指定建表时默认的增量数据的存储格式。AP 负载场景下默认为 `encoding`，其他负载场景下默认为 `flat`。 |
| default_skip_index_level | 新增 | 指定建表时默认的 Skip Index 的创建级别。AP 负载场景下默认为 1，其他场景默认为 0。 |
| enable_ttl | 新增 | 用于控制是否开启 TTL（Time To Live） 功能，开启后后台线程周期删除 TTL 定义下过期的行数据。默认为 `False`。 |
| ttl_duty_time | 新增 | 用于控制 TTL（Time To Live） 后台任务定期触发时间。默认为 “01:00”。 |
| default_table_merge_engine | 值域变更 | 新增 `append_only` 选项。建表语句中 `merge_engine` 属性也会同步增加该选项。 |
| ob_vector_index_active_segment_max_size | 新增 | 用于控制单个分区的向量索引 Active Segment 的最大内存占用量，当超过此大小时会强制触发冻结持久化操作。默认为 0，表示系统自适应。 |
| ob_vector_index_merge_trigger_percentage | 新增 | 用于控制向量索引增量 Segment 内存可占用对应分区向量索引内存的最大比例，超过该值时，系统将自动触发与基线 Segment 的合并操作。默认为 20。 |
| enable_window_compaction | 新增 | 用于控制租户是否使用窗口合并特性。若为 `True`，表示每日执行窗口合并；若为 `False`，表示每日执行租户合并。默认为 `False`。 |
| sql_func_extension_mode | 新增 | 用于控制是否打开一些命名风格与 MySQL 不一致的主流兼容模式函数，如 Clickhouse。默认为 '', 表示不开启。 |
| zone_deploy_mode | 新增 | 用于控制当前租户为同构 zone 还是异构 zone 模式。默认值为 HOMO，表示当前为同构 zone 模式。该值可改为 `HETERO`，表示开启异构 zone 能力，支持最多两种不同的 `UNIT NUM` 存在。当前异构 ZONE 不支持变更为同构 ZONE。 |
| enable_gts_standalone | 新增 | 用于设置开启租户 GTS 服务独占一组 unit 的功能。开启可提升 GTS 服务的性能和稳定性。 |
| enable_mlog_auto_maintenance | 新增 | 新增租户级配置项，控制 MLOG 自动创建管理的开关，默认值为 `True`。 |
| mlog_trim_interval | 新增 | 新增租户级配置项，控制 MLOG 后台自动裁剪任务的调度周期，默认值为 1d。 |
| enable_mv_binlog_minimal_mode | 新增 | 新增租户级配置项，用于控制是否对物化视图的 DML 开启 Minimal 模式。开启后会简化 CLOG 内容，优化物化视图刷新性能，但对于下游依赖物化视图完整 CLOG 的场景，可能存在异常，请评估后开启使用。默认为 `False`，表示不开启物化视图的 Minimal 模式。 |
| px_target_workers_per_cpu | 新增 | 用于控制预期的并行执行线程数和租户 CPU 数的比率。默认为 8。相同的功能老版本由系统变量 `parallel_servers_target` 实现，`parallel_servers_target` 表示 px 线程数的绝对值，扩缩容后需要调整，不够灵活。因此新版本变更为系统自适应动态调整。 |
| px_target_low_watermark | 新增 | 用于设置并行线程数的低水位线百分比阈值，超过该阈值时开始对新调度的 DFO 的并行度进行降级控制，避免 CPU 资源耗尽。默认 60。 |
| px_target_high_watermark | 新增 | 用于设置并行线程数的高水位线百分比阈值，实时负载越接近该水位，并行度降级幅度越大，超过该水位时，并行度降为 1。默认 60。 |
| kv_ttl_delete_max_ops | 新增 | 用于控制租户内 TTL 任务每秒删除的最大操作数。默认为 0，表示不对 TTL 任务的删除限速。 |
| system_protected_tenant_parameters | 新增 | 集群级配置项，用于设置被锁定的配置项列表，在该列表中的租户级配置项，不允许普通用户对其进行修改。默认为 ''。 |
| document_ai_file_max_size | 新增 | 用于限制 Document AI 相关表达式（`LOAD_FILE` 和 `AI_PARSE_DOCUMENT`）一次处理的文件最大大小。 |

### 系统变量变更

| 系统变量 | 变更类型 | 变更说明 |
| --- | --- | --- |
| ap_query_route_policy | 新增 | 用户控制副本自适应选择策略，`OFF` 表示关闭、`AUTO` 表示根据查询特征和代价自适应选择列存副本、`Force` 表示尽可能选择列存副本。默认为 `AUTO`。该变量也支持通过 `opt_param` Hint 实现查询级别的控制。 |
| ap_query_cost_threshold | 新增 |
|  | 新增 | 用于控制自适应选择列存副本时的代价阈值，默认为 200000。并行的 `select` 计划，会根据规则选择列存副本执行；单并行度的行存副本 `select` 计划的代价超过该变量时，将选择列存副本生成计划。 |
| ap_query_replica_fallback | 新增 | 用于控制当 TP/AP 查询自动分流功能开启时，无可用列存副本的情况下是否回退到非列存副本执行。默认为 `True`，表示需要回退。 |
| caching_sha2_password_digest_rounds | 新增 | 用于控制使用 `caching_sha2_password` 认证插件时，密码哈希存储到磁盘前所执行的 `SHA256` 迭代次数。默认为 5000。 |

### 视图变更

| 视图 | 变更类型 | 变更说明 |
| --- | --- | --- |
| CDB/DBA_OB_BACKUP_VALIDATE_JOBS | 新增 | 展示用户发起的备份校验 job 的相关信息。 |
| CDB/DBA_OB_BACKUP_VALIDATE_JOB_HISTORY | 新增 | 展示用户发起的备份校验 job 的历史信息。 |
| CDB/DBA_OB_BACKUP_VALIDATE_TASKS | 新增 | 展示用户发起的备份校验 task 的相关信息。 |
| CDB/DBA_OB_BACKUP_VALIDATE_TASK_HISTORY | 新增 | 展示用户发起的备份校验 task 的历史信息。 |
| CDB/DBA_TABLES | 新增列 | - 新增 `DELTA_FORMAT` 列，用于展示表的增量数据的存储格式。 - 新增 `SKIP_INDEX_LEVEL` 列，用于展示 Skip Index 的创建级别。 - 新增 `TTL_DEFINITION` 列，用于展示表的 TTL 属性。 |
| [G]V$OB_EXTERNAL_CATALOG_CLIENT_POOL_STAT | 新增 | 用于获取 Catalog 的客户端池化信息。 |
| CDB/DBA_OB_TTL_TASKS | 新增 | 用于展示 TTL 任务的执行情况。 |
| CDB/DBA_OB_TTL_TASK_HISTORY | 新增 | 用于展示 TTL 任务的执行历史。 |
| [G]V$OB_HNSW_INDEX_SEGMENT_INFO | 新增 | 向量索引 Segment 粒度的可观测能力。 |
| DBA_OB_VECTOR_INDEX_TASKS | 新增列 | - 新增 `TASK_TYPE` 字段，用于描述任务类型。 - 新增 `TASK_INFO` 字段，用于描述任务进度信息。 |
| DBA_OB_VECTOR_INDEX_TASK_HISTORY | 新增列 | - 新增 `TASK_TYPE` 字段，用于描述任务类型。 - 新增 `TASK_INFO` 字段，用于描述任务进度信息。 |
| CDB/DBA_OB_LOB_CHECK_TASKS | 新增 | 记录 LOB 一致性校验和恢复的任务扫描的进度。 |
| CDB/DBA_OB_LOB_CHECK_EXCEPTION_RESULT | 新增 | 记录 LOB 一致性校验的异常 table 和 tablet 以及异常类型。 |
| CDB/DBA_OB_MAJOR_COMPACTION | 新增列 | 新增 `MODE` 列用于记录每日合并的类型。 |
| CDB/DBA_OB_DEADLOCK_EVENT_HISTORY | 字段取值变更 | - `module`：取值固定为 `transaction`。 - `visitor`：格式为 `{session_id:$1}:{txid:$2}`，`$1` 与 `$2` 均为数字。（老版本仅为 `{txid:xx}`） - `object`：行的主键描述，格式为 `{addr:"$1:$2"}:{ls:$3}:{tablet:$4}:{row_key:{$5}}`，其中 `$1` 为 IP，`$2` 为 PORT，共同组成冲突发生的机器进程地址，`$3` 为冲突发生时所在的日志流，`$4` 为冲突发生时所在的 tablet，`$5` 为行锁主键字符串化后的内容。（老版本为 `{row_key:xxx}`） - `extra_name1`：固定为 `wait_sql`。（老版本为 `current sql`） - `extra_value1`：事务发生死锁的当前正在执行的 SQL 内容。 - `extra_name2`：固定为 `hold_sql_request_time`。（老版本为空） - `extra_value2`：持锁语句的请求时间。（老版本为空） - `extra_name3`：固定为 `hold_sql`。（老版本为空） - `extra_value3`：持有 `cycle_idx - 1` 行记录对应的 `object` 的 SQL 语句。（老版本为空） |
| CDB/DBA_OB_LS | 新增列 | 新增 `UNIT_LIST` 列，描述日志流的 UNIT 分布列表。 |
| CDB/DBA_OB_BALANCE_JOBS | 新增列 | 新增 `ZONE_UNIT_NUM_LIST` 和 `PARAMETER_LIST` 分布记录了租户各 Zone 的 `UNIT NUM` 和均衡相关配置项参数。 |
| CDB/DBA_OB_BALANCE_JOB_HISTORY | 新增列 | 新增 `ZONE_UNIT_NUM_LIST` 和 `PARAMETER_LIST` 分布记录了租户各 Zone 的 `UNIT NUM` 和均衡相关配置项参数。 |
| CDB/DBA_WR_ACTIVE_SESSION_HISTORY | 新增列 | 新增 `WEIGHT` 列，用于记录一条落盘 ASH 记录的权重。 |
| [G]V$ACTIVE_SESSION_HISTORY | 新增列 | - 新增 `WEIGHT` 列，用于记录一条落盘 ASH 记录的权重。 - 新增 `IS_WR_WEIGHT_SAMPLE` 列，表示是否为队列积压等待事件压缩列。 |
| [G]V$OB_ACTIVE_SESSION_HISTORY | 新增列 | - 新增 `WEIGHT` 列，用于记录一条落盘 ASH 记录的权重。 - 新增 `IS_WR_WEIGHT_SAMPLE` 列，表示是否为队列积压等待事件压缩列。 |
| CDB/DBA_WR_SQLSTAT | 新增列 | 新增 `SAMPLE_TIME` 列，用于记录 `SQLSTAT` 快照落盘时间。 |
| [G]V$OB_SQLSTAT | 新增列 | 新增 `LATEST_ACTIVE_TIME` 列，用于记录某个节点上 `sql_id + plan_hash` 对应计划的最后一次活跃时间。 |
| [G]V$OB_SQL_AUDIT | 新增列、列语义变更 | - 新增 `COMMIT_TIME` 列，用于记录事务的提交耗时。 - `ELAPSED_TIME` 列语义变更为包含 `COMMIT_TIME` 时间。 |
| CDB/DBA_OB_SENSITIVE_RULES | 新增 | 用于展示敏感规则的定义及属性。 |
| CDB/DBA_OB_SENSITIVE_COLUMNS | 新增 | 用于展示敏感规则保护的列信息。 |
| CDB/DBA_OB_SENSITIVE_RULE_PLAINACCESS_USERS | 新增 | 用于展示在敏感规则上拥有 `PLAINACCESS` 权限的用户或角色。 |
| ALL/DBA/USER_OBJECTS | 新增对象 | 新增 `SENSITIVE RULE` 对象的展示。 |
| ALL/DBA/USER/ROLE_TAB_PRIVS | 新增对象 | 新增对象级的 `PLAINACCESS` 权限的展示。 |
| DBA/USER/ROLE_SYS_PRIVS | 新增对象 | 新增用户级的 `PLAINACCESS` 和 `CREATE SENSITIVE RULE` 权限的展示。 |
| [G]V$OB_SINDI_INDEX_INFO | 新增 | 用于显示 SINDI 向量索引信息。 |
| [G]V$OB_HNSW_INDEX_INFO | 列名变更 | `SNAP_INDEX_CNT`、`INCR_INDEX_CNT` 字段更新为 `SNAP_VECTOR_CNT`、`INCR_VECTOR_CNT`。 |
| [G]V$OB_PLAN_CACHE_PLAN_STAT | 新增列 | 新增 `create_reason`、`cache_node_id`、`pcv_id`、`plan_set_id` 列，用于展示当前计划被加入 Plan Cache 的原因。 |
| CDB/DBA_OB_USERS | 新增列 | 新增 `plugin` 列，用于记录密码 HASH 计算使用的 `plugin` 名称。 |

### 语法变更

| 语法 | 变更说明 |
| --- | --- |
| 新增 ALTER SYSTEM VALIDATE BACKUP/BACKUPSET/ARCHIVELOG_PIECE 语法 | 用于发起备份校验认证。 |
| 新增 ALTER SYSTEM CANCEL VALIDATE BACKUP 语法 | 用于取消备份校验任务。 |
| CREATE TABLE/ALTER TABLE 语法新增 delta_format 表属性 | 用于控制增量数据的格式。AP 负载场景下默认为 `encoding`，其他负载场景下默认为 `flat`。 |
| CREATE TABLE/ALTER TABLE 语法新增 skip_index_level 表属性 | 用于控制生成 Skip Index 聚合统计信息的数据范围。默认为 0。   - 设置为 0 时，该表的列存基线都生成 Skip Index 聚合信息，行存基线根据 Schema 生成 Skip Index 聚合信息，增量 sstable 不生成 Skip Index 聚合信息。 - 设置为 1 时，在 0 的基础上，`DELETE_INSERT`/`INSERT_ONLY` 模式的表的增量 sstable 会根据基线的行为对应生成 Skip Index 聚合信息。 |
| CREATE EXTERNAL CATALOG 语法新增 REST Catalog 相关属性 | 新增 `TYPE = 'REST'` 的 Catalog 类型，以通过标准化的 HTTP REST API 接口访问 Iceberg 表。 |
| 新增 SHOW DATABASES FROM catalog 和 SHOW TABLES FROM catalog.database 语法 | 用户查看指定 Catalog 下的 `databases` 和指定 `catalog.database` 下的 `tables`。 |
| CREATE TABLE 新增 TTL（Time To Live） 语法 | 如建表时通过指定 `TTL ora_rowscn + INTERVAL 10 DAY BY COMPACTION`，设置该表自动删除 10 天前的数据。 |
| 新增 Iceberg 表 time travel 语法 | Iceberg 表查询语句中支持指定 `{VERSION \\| TIMESTAMP} AS OF '<version_identifier>'`，以查询过去某个快照的数据。 |
| ALTER SYSTEM CREATE/MODIFY LS 新增 UNIT_LIST 子句 | 新增日志流运维语法，可用于异构 Zone 模式下指定日志流分布的 unit 列表。 |
| DBMS_MVIEW.REFRESH 命令新增级联刷新相关参数 | `DBMS_MVIEW.REFRESH('mv_name', 'refresh_method', nested=> true, nested_refresh_mode => 'consistent/inconsistent')`  - 设置刷新嵌套物化视图的策略，当 `nested` 指定为 `true` 时级联刷新嵌套物化视图，`nested` 指定为 `false` 时，独立刷新嵌套物化视图。 - 设置级联刷新的一致性行为，指定 `nested` 为 `true` 时，指定 `consistent` 和 `inconsistent` 分别描述两种级联刷新行为, 不指定 `nested_refresh_mode` 关键字时默认为级联非一致刷新。 |
| CREATE/ALTER MATERIALIZED VIEW 新增 individual/inconsistent/consistent 刷新策略属性 | `CREATE MATERIALIZED VIEW mv1 REFRESH [individual/inconsistent/consistent] AS xxx` 创建/修改嵌套物化视图时指定刷新策略：   - 独立刷新定义为 `individual`。 - 级联非一致性刷新，定义为 `inconsistent`。 - 级联一致性刷新，定义为 `consistent`。 |
| 物化视图基表新增支持指定 AS OF PROCTIME() 属性 | 如 `CREATE MATERIALIZED VIEW mv REFRESH FAST ON DEMAND AS SELECT xxx FROM t1 LEFT JOIN t2 AS OF PROCTIME() ON t1.c1 = t2.c1 LEFT JOIN t3 ON t1.c2 = t3.c2 WHERE xxx;`，在创建物化视图的时候对基表添加 `AS OF PROCTIME()` 可以指定增量刷新时跳过这张表的刷新，并且 `AS OF PROCTIME()` 的表可以不需要有 MLOG。 |
| 新增 SENSITIVE RULE 相关语法 | - `CREATE SENSITIVE RULE <rule_name> ON <sensitive_field_list> USING <sensitivity_protection_spec>;`：用于创建敏感数据保护规则。 - `DROP SENSITIVE RULE <rule_name>;`：用于删除敏感数据保护规则。 - `ALTER SENSITIVE RULE <rule_name> <alter_sensitive_rule_action>;`：用于修改敏感数据保护规则的属性。 - `GRANT/REVOKE CREATE SENSITIVE RULE ON *.* TO/FROM user_or_role;`：用于授予/撤回用户或角色创建敏感规则的权限。 - `GRANT/REVOKE PLAINACCESS ON SENSITIVE RULE <rule_name> TO/FROM user_or_role;` 或 `GRANT/REVOKE PLAINACCESS ON *.* TO/FROM user_or_role;`：用于授予/撤回用户或角色明文访问敏感规则保护下的列的权限。 - `SHOW SENSITIVE RULES;`：用于查看所有敏感数据保护规则及其保护的列，支持根据规则名、表名、数据库名过滤。 |
| 向量查询新增 vector_index Hint | `/*+ vector_index (table_name index_name [ filter_type]) */` 用来指定向量索引查询使用的向量索引以及过滤类型。 |
| 向量索引新增 type=sindi_sq 的索引类型 | `vector index idx1(c2) with (distance=inner_product, type=sindi_sq, lib=vsag)`。 |
| Oracle 模式支持 ALTER SYSTEM FLUSH SQL AUDIT/PS CACHE 命令 | - 支持在 Oracle 模式下使用 ALTER SYSTEM FLUSH SQL AUDIT 语句刷新 SQL AUDIT。 - 支持在 Oracle 模式下使用 ALTER SYSTEM FLUSH PS CACHE 语句刷新 PS CACHE。 |
| WITH CHECK OPTION 支持子查询 | 兼容支持 Oracle 和 MySQL 中 WITH CHECK OPTION 带子查询的行为。 |
| CREATE USER 新增 caching_sha2_password 认证方式 | - `CREATE USER IDENTIFIED WITH caching_sha2_password BY PASSWD;` - `CREATE USER IDENTIFIED WITH caching_sha2_password BY PASSWORD auth_string;` |
| 新增 Search Index 相关语法 | - `CREATE TABLE t (c1 INT, c2 JSON, c3 json, ..., SEARCH INDEX idx_search (c1, c2 [WITH ...], c3));`：用于随表创建 Search Index 索引。 - `CREATE SEARCH INDEX idx_search ON t (c1, c2 [WITH...], c3, ...);`：用于后建 Search Index 索引。 - `SELECT JSON_EXPR(jdoc, path [pick {json_number \| json_string}]) FROM t;` 新增 Search Index 查询参数，精准筛选 JSON 标量类型，优化查询准确性。 |
| 全文索引增加 FTS_INDEX_TYPE 可选项 | `CREATE TABLE`/`ALTER TABLE ADD FULLTEXT INDEX`/`CREATE FULLTEXT INDEX` 中 `FULLTEXT INDEX` 增加可选项：`FTS_INDEX_TYPE [=] FILTER/MATCH/PHRASE_MATCH`。 |
| ALTER SYSTEM MAJOR FREEZE TENANT [=] tenant_name TABLE_ID = table_id 语法 | 新增指定表级合并。 |

### 系统包变更

| 系统包 | 变更类型 | 变更说明 |
| --- | --- | --- |
| dbms_lob_manager | 新增 | 用于执行 LOB 一致性检测任务。包括 `CHECK_LOB`、`CANCEL_JOB`、`SUSPEND_JOB`、`RESUME_JOB`、`RESCHEDULE_JOB` 等多个子过程。 |
| dbms_daily_maintenance | 新增 | 用于管理窗口合并任务。包括 `TRIGGER_WINDOW_COMPACTION_PROC`、`SET_THREAD_COUNT` 子过程。 |
| dbms_scheduler | 新增内部任务 | 新增 `DAILY_MAINTENANCE_WINDOW` 内部任务，可使用 `DBMS_SCHEDULER.DISABLE`/`ENABLE`/`SET_ATTRIBUTE` 子过程进行管理。 |
| dbms_resource_manager | 新增子过程 | 新增 `COPY_PLAN` 子过程，用于复制已有的资源管理计划及其相关的资源计划指令。 |
| sdo_util | 新增 | 支持 `GETVERTICES` 子函数，用于提取几何对象（Geometry）的顶点坐标。 |
| sdo_geom | 新增子函数 | 新增 `SDO_AREA` 子函数，用于计算二维几何对象的面积。 |
| dbms_workload_repository | 新增参数 | `MODIFY_SNAPSHOT_SETTINGS` 子过程新增 `SQLSTAT_INTERVAL` 参数，代表 `SQLSTAT` 采样间隔时间（分钟）。 |
| dbms_vector | 新增子函数 | 新增 `QUERY_RECALL` 子函数，用于计算该 SQL 的召回率；新增 `INDEX_RECALL` 子函数，用于计算某个向量索引的召回率。 |

### 函数变更

| 函数 | 变更类型 | 变更说明 |
| --- | --- | --- |
| SDO_CONTAINS | 新增 | 判断一个几何对象（geometry A）是否严格包含另一个几何对象（geometry B）。 |
| SDO_ANYINTERAC | 新增 | 判断两个几何对象之间是否存在任意形式的相交或接触。 |
| MAX_PT | 新增 | 获取当前表中最大且包含数据的分区值，建议用于 List 分区场景。 |
| DATE_TRUNC | 新增 | 用于日期截断。 |
| MONTHS_ADD | 新增 | 用于日期加法计算。 |
| TO_DATE | 新增 | 用于将字符串按特定格式转换为日期类型。 |
| CAST AS BIGINT | 新增 | 用于将数据转化为 `bigint` 类型。 |
| ARBITRARY | 新增 | 用于从一组行中非确定性地返回任意非 `NULL` 值。 |
| ISNAN | 新增 | Clickhouse 兼容扩展函数，用于判断数值 `number` 是否为 “非数字”（NaN）。 |
| ADDDATE | 新增 | Clickhouse 兼容扩展函数，用于日期加法计算。 |
| FORMATDATETIME | 新增 | Clickhouse 兼容扩展函数，用于将日期或日期时间格式化。 |
| TOUNIXTIMESTAMP | 新增 | Clickhouse 兼容扩展函数，用于将日期时间表达式 转换为 Unix 时间戳。 |
| EDITDISTANCE | 新增 | Clickhouse 兼容扩展函数，用于计算两个字符串之间的编辑距离。 |
| STDDEVSAMP | 新增 | Clickhouse 兼容扩展函数，用于返回表达式的样本标准差。 |
| UNIQ | 新增 | Clickhouse 兼容扩展函数，用于近似计算列中不同值的数量。 |
| VARSAMP | 新增 | Clickhouse 兼容扩展函数，用于返回表达式的样本方差。 |
| ANY | 新增 | Clickhouse 兼容扩展函数，用于从一组值中选择任意一个值。 |
| GROUPCONCAT | 新增 | Clickhouse 兼容扩展函数，用于将组内多行表达式的值连接成一个字符串。 |
| LAGINFRAME | 新增 | Clickhouse 兼容扩展函数，用于在当前窗口框架内，返回位于当前行之前 `offset`（默认为 1）行的 `expr` 值。 |
| LEADINFRAME | 新增 | Clickhouse 兼容扩展函数，用于当前窗口框架内，返回位于当前行之后 `offset`（默认为 1）行的 `expr` 值。 |
| MD5_CONCAT_WS | 新增 | 用于把多个字符串连接成一个字符串，之后计算拼接字符串的 MD5 结果作为返回值。 |
| LOAD_FILE | 新增 | 基于临时外表借口读取外部存储文件到数据库内，支持读取本地文件、HDFS/OSS/S3 文件并返回对应的 BLOB 数据。 |
| AI_PARSE_DOCUMENT | 新增 | 用于调用指定视觉理解/OCR 模型对文档数据（例如 PDF）进行识别，并解析成指定格式的文本。 |
| AI_SPLIT_DOCUMENT | 新增 | 用于切分指定格式的文档内容，输出一张固定格式表用于记录切分内容。 |

### 升级说明

#### 非共享存储模式

- 支持从 V4.4.1 及以下的 V4.4.x 系列版本平滑升级到 V4.6.0 版本。
 - 支持从 V4.3.5 BP2 及以下的 V4.3.x 系列版本平滑升级到 V4.6.0 版本，但仅限于 POC 和测试环境，有一定的风险，如果升级遇到问题环境可能需要重建。建议先升级到 V4.4.1 版本后再升级 V4.6.0 版本。
 - 支持从 V4.5.0 版本升级到 V4.6.0 版本。
 - 暂不支持 V4.2.x 系列或更低版本升级到 V4.6.0 版本。
 - 暂不支持 V4.4.2 版本升级到 V4.6.0 版本。

#### 共享存储模式

- 不支持共享存储模式的低版本升级到 V4.6.0 版本。

### 周边配套

| 组件 | 版本 |
| --- | --- |
| ODP | ODP 4.3.6.2   #### 说明    使用 `caching_sha2_password` 认证方式，需配套 ODP 4.4.0 版本。 |
| OCP | OCP 4.4.2 |
| ODC | ODC 4.4.2 |
| OBCDC | OBCDC 4.6.0 |
| OMS | OMS 4.3.2 BP1   #### 说明    不涉及获取 OceanBase 数据库 V4.6.0 版本增量数据时，使用 OMS V4.3.2 BP1 版本；涉及获取增量数据时，请热更 Store。 |
| Binlog | Binlog 4.3.6.3 |
| OCCI | OCCI 1.0.6 |
| OBCI | OBCI 2.1.1.2 |
| ECOB | ECOB 1.2.1 |
| OBClient | OBClient 2.2.13 |
| LibOBClient | LibOBClient 2.2.13 |
| JDBC | JDBC 2.4.17 |
| ODBC | ODBC 2.0.9.8 |
| .NET | .NET 1.0.0 |
| 导入导出 | ob-loader-dumper 4.3.5 |
