v4.2.2_CE
版本发布时间: 2024-01-17 21:42:18
oceanbase/oceanbase最新发布版本:v4.2.4_CE(2024-07-15 09:44:43)
版本信息
项目 | 描述 |
---|---|
发布日期 | 2024-1-17 |
版本号 | V4.2.2_CE |
Commit 号 | fac02c6 |
OBServer RPM 版本号 | oceanbase-ce-4.2.2.0-100000192024011915 |
版本定位
作为 OceanBase 数据库 V4.2.1_CE 后继版本,V4.2.2_CE 版本已正式发布。内核层面进一步加强,重构估行系统和统计信息收集机制,持续完善 MySQL 兼容性,新增 Lateral Derived Tables、分页查询保序、DBLink 调用远端 UDF 等多项业务依赖特性;同时也补充完善了 GIS/XML/JSON 等多模类型实现;新增 SQLSTAT、TIME MODEL、手动 Transfer 分区等多项易用性功能改进;通过降低索引临时空间占用、支持 OBKV RPC 压缩等一系列特性,优化系统资源使用。优化小规格基础测试性能,提高系统稳定性。
关键特性说明
内核增强
-
估行系统增强
随着 OceanBase 数据库版本的不断演进,优化器代价估计的方式也越来越丰富。涉及到每个算子估行,目前已经支持了存储层估行、统计信息估行、动态采样、默认统计信息等算法。V4.2.2_CE 版本重构估行系统,根据不同场景,指定不同的估行策略优先顺序,并提供 HINT、系统变量等手工干预估行策略选择的方式。同时新版本对谓词选择率和 NDV 计算框架也做了进一步增强,以此提高优化器代价估计的准确性。
-
统计信息增强
在 V4.2.1_CE 版本基础上,V4.2.2_CE 版本完善了统计信息功能、改善了统计信息收集性能、提升了统计信息兼容性和易用性。主要包括重构离线统计信息收集流程、提升统计信息收集效率、优化统计信息收集策略。默认自动收集索引直方图,使用推导统计信息的收集方式,保证在线统计信息收集的事务一致性;兼容 MySQL
ANALYZE TABLE
功能,提供更丰富的语法支持;新增取消统计信息收集的命令,丰富统计信息收集进度监控,增强运维易用性;提供统计信息并行删除能力等。 -
大 IN 优化
目前在 IN 谓词右支包含多常量的场景下(简称“大 IN”),硬解析阶段会有明显的 CPU 和内存消耗。V4.2.2_CE 版本针对大 IN 场景,实现新版 Query Range 抽取算法,同时默认 INLIST 超过 1000 时,触发 INLIST 到 VALUES TABLE 的改写,降低资源消耗,提升性能。
-
执行引擎强化
V4.2.2_CE 版本在 SQL 执行层进行了一系列优化,如 Recursive CTE 搜索优化、Window Function 接入自动内存管理、Adaptive Hash GBY 数据倾斜优化、Adaptive Hash GBY 自适应策略完善、Hash Based Distinct Aggregate 优化等,提升 SQL 执行性能和系统稳定性。
-
PL 重新编译逻辑优化
存储过程编译为共享库后,可以提供给多个线程使用。但如果发生依赖对象变更,共享库可能失效需要重新编译。V4.2.2_CE 版本针对重新编译场景做了梳理细化,在临时表匹配、静态 SQL 依赖对象信息收集、表 DDL 变更等方面进行一系列逻辑优化,减少因 PL CACHE 缓存对象失效导致重新编译的场景。
-
PL 编译结果落盘
当前 PL Function/Procedure 编译后会加入到 PL Cache 中,当内存压力过大时可能会被淘汰,重启后会丢失编译结果,并且在分布式场景下也需要重新编译。在这些情况下,PL 无法命中 PL Cache,进而触发 LLVM 编译,导致消耗部分 CPU 资源。V4.2.2_CE 版本开始,PL Function/Procedure 被加入系统表落盘保存,未触发 DDL 使 PL 缓存失效的情况下,无论重启还是分布式场景都可以只编译一次后复用缓存。
-
函数索引 SESSION 变量固化
创建函数索引时,会向主表添加一个隐藏的虚拟生成列,定义为函数索引的索引键,然后再将虚拟生成列的值存储到索引表中。一些内置系统函数的结果会受到 SESSION 变量的影响,不同 SESSION 变量的取值,即使函数入参相同,计算结果也是不同的。为提高生成列/函数索引的稳定性,新版本在创建函数索引和生成列时,会将依赖的 SESSION 变量固化至索引列和生成列的
column schema
中。后续计算索引列和生成列的取值时,使用固化值,不受当前 SESSION 下变量取值的影响。V4.2.2_CE 版本支持固化的系统变量为timezone_info
、nls_format
、nls_collation
、sql_mode
等。 -
OBCDC 黑白名单
OBCDC 目前已具备租户级别的日志同步功能,V4.2.2_CE 版本开始,增加库、表级同步粒度。支持通过简单的正则表达式配置黑白名单,来满足用户只需要同步部分表的数据消费场景。
MySQL 兼容
-
Lateral Derived Tables
Lateral Derived Tables 是一种特殊的 Derived Tables,可以引用同一 FROM 子句中前面表的列,这种用法下 SQL 更易读易写,往往也可以减少数据的重复扫描计算,提升 SQL 执行性能。
-
分页查询保序
受计划选择、并行执行等因素影响,大部分数据库在
limit offset
场景下输出结果是不稳定的,需要在每个 SQL 外层添加order by
来保证稳定有序输出。原生 MySQL 数据库虽然未承诺保序,但很多查询仍会保持结果集有序输出,为了避免 MySQL 迁移业务分页场景的一一改造,OceanBase 数据库增加分页查询保序功能,但大数量下和不保序行为相比会存在一定的性能回退。明确有诉求的业务场景,评估测试性能影响可接受后,可通过配置项打开该功能。 -
INTEGER 列类型增长支持 Online 方式
对于主键列/分区键/索引列/被生成列依赖的列/有 Check 约束的列,列类型如果为整型,当列类型修改为取值范围更大的整形列类型时(如 INT -> BIGINT),在 V4.2.1_CE 版本中是通过双表双写的 Offline DDL 实现,转换过程中会加表锁,阻塞读写。但从 V4.2.2_CE 版本开始,将 Offline DDL 改进为 Online DDL,整型列类型增长将不再影响业务写入。
-
客户端本地导入
OceanBase 数据库 V4.2.2_CE 之前版本,支持了通过 SQL 导入(普通或旁路) 服务端、NFS、OSS 文件,但客户端本地文件需要借助 OBLoader 等工具导入,无法通过 SQL 命令直接导入。为了方便数据开发人员进行本地导入测试,也为了解决云环境无法登录服务端导致数据导入不方便的问题,V4.2.2_CE 版本新增支持客户端本地导入(LOAD DATA LOCAL INFILE)功能,通过流式文件处理方式完成本地文件导入。
-
PS 协议支持存储过程出参
在MySQL 模式下,使用 PS 协议执行
CALL PROCEDURE
语句时,新增支持存储过程带出参的场景。 -
通信协议完善
兼容 MySQL
COM_SET_OPTION
通信协议命令,用于指定 CONNECTION 级别选项,如MYSQL_OPTION_MULTI_STATEMENTS_ON
、MYSQL_OPTION_MULTI_STATEMENTS_OFF
。兼容 MySQL AuthSwitchRequest 协议,用于支持认证方式切换,解决部分客户端版本不匹配导致认证出错的问题。 -
Show Extended Tables/Columns/Index
支持 MySQL 8.0 新增的
SHOW EXTENDED
语法,如show extended tables
、show extended columns
、show extended index
。 -
支持
utf8mb4/utf16_unicode_ci
字符序社区版本新增支持
utf8mb4_unicode_ci
和utf16_unicode_ci
字符序。
多模特性
-
MySQL GIS 增强
OceanBase 数据库 V4.1.0_CE 版本支持了 MySQL GIS 数据类型及部分空间对象相关的表达式,V4.2.2_CE 版本在此基础上进一步补齐空间数据存储和计算分析的能力,新增支持 MySQL 兼容的
ST_Crosses/ST_Overlaps/ST_Difference/ST_Union/ST_SymDifference/ST_Length/ST_Centroid/ST_AsGeoJSON
等表达式。另外 PG 作为 GIS 行业使用最广的数据库,提供了部分区别于 MySQL 的常用表达式,OceanBase 数据库在新版本也进行了扩展补充,包括_ST_Touches/_ST_Equals/_ST_MakeEnvelope/_ST_ClipByBox2D/_ST_GeometryType/_ST_IsCollection/_ST_NumInteriorRings/_ST_PointOnSurface/ST_AsMVTGeom/_ST_AsMVT
等,同时也支持了三维空间对象的存储能力。 -
MySQL XML
新增兼容 ExtractValue、UpdateXML 表达式。
-
MySQL JSON
新增兼容
JSON_SCHEMA_VALID
、JSON_SCHEMA_VALIDATION_REPORT
和JSON_ARRAY_APPEND
表达式。 -
MySQL JSON Partial Update
在使用 JSON 文档存储业务数据的场景中,若需要对文档进行更新,目前只能全量读取后全量更新,文档较大时性能无法满足预期。V4.2.2_CE 版本新增支持 JSON Partial Update 功能,当用户通过特定表达式(
JSON_SET/JSON_REPLACE/JSON_REMOVE
等)更新 JSON 文档的部分字段时,可以只更新要修改的部分,无需全量覆盖更新,提升了更新性能,该功能需要通过log_row_value_options
配置项开启使用。
性能提升
-
小规格专项性能优化
针对 4C16G 小规格环境,V4.2.2_CE 版本在后台线程使用、Location Cache 访问、读写主路径、系统调用等方面进行了一系列优化。在 30 个压测表,单表 50 万行数据,单 Primary Zone 的 SYSBENCH 压测场景下,相对 V4.2.0_CE 版本提升约 10%-30%。
场景 | read write | write only | read only | select | insert | update |
---|---|---|---|---|---|---|
V4.2.0_CE 默认参数 | 1330 | 4714 | 2334 | 67776 | 20880 | 21507 |
V4.2.2_CE 默认参数 | 1520 | 5652 | 2645 | 77910 | 25798 | 27433 |
相对 V4.2.0_CE 提升比例 | 14% | 20% | 13% | 15% | 24% | 28% |
-
单日志流并行同步
OceanBase 数据库 V4.2.2_CE 版本之前的日志同步模型为不同日志流并行同步和处理,单日志流基于 Pipeline 方式同步。目前在同城消费本地盘日志的场景下是可以满足性能要求的,但在备库异地部署、读对象存储的场景下,性能相对会差一些。V4.2.2_CE 版本实现了基于文件数据块的单日志流并行同步模型,显著提升同步性能并优化内存使用。
资源优化
-
OBKV RPC 压缩
OBKV 新增查询请求回包的 RPC 消息压缩功能。客户端和服务端间网络带宽资源不足的场景下,通过 RPC 消息压缩,显著降低网络传输的数据大小,减小网络带宽消耗。
-
强化旁路导入资源控制
OceanBase 数据库 V4.x 版本支持的旁路导入功能显著提高了数据导入速率,但在用户设定较高并行度且并发执行的旁路导入任务较多时,资源缺少严格控制,容易造成较多线程和内存占用,影响其他任务的正常执行。V4.2.2_CE 版本新增三个维度的旁路导入资源管理能力:
* 新增任务级资源申请管理模块,根据导入任务的执行模式和分区数量,申请对应的线程和内存资源。 * 新增租户级资源管理模块,管理租户用于旁路导入的线程和内存资源,以定时任务感知资源池变化,回收异常中断的导入任务申请的资源。 * 新增 OBServer 级资源管理模块,记录节点级资源申请,并根据任务数动态伸缩旁路导入任务排序阶段的可用内存。
-
R 副本按 Region 级联
OceanBase 数据库 V4.2.0_CE 版本开始支持 R 副本功能,服务于弱读、复制表等场景。一个 R 副本通过注册为 F 副本或其他 R 副本的下游来同步日志,当多个 R 副本和其上游被部署在不同的 Region 时,可能占用额外的跨 Region 网络带宽。V4.2.2_CE 版本新增 R 副本对 Region 的感知能力,在日志同步时会尽量选择相同 Region 的其他副本作为上游,尽量避免跨 Region 的网络传输,节省跨 Region 带宽。
-
分区局部索引空间优化
后建索引流程中,通过发送内部 SQL 加载索引表数据,如果某个节点数据量很大,在排序过程中,可能引起临时空间放大。V4.2.2_CE 版本支持了索引表补数据的渐进式执行,单机 1GB 数据量在同一批次执行,多机任务并行执行,这样在充分利用了分布式系统并行计算能力的同时,也能够解决在索引构建过程中出现的临时空间放大问题。
-
JSON/XML 汇聚函数内存优化
新版本优化了
XMLAGG
、JSON_OBJECTARRAY
等汇聚函数在执行过程中的内存消耗。
高可用增强
-
主备租户角色切换验证
OceanBase 数据库支持租户级主备角色切换,如在数据无损情况下可以将备租户 SWITCHOVER 成主租户,将主租户 SWITCHOVER 成备租户,或在数据损失情况下将备租户 FAILOVER 成主租户。主备租户角色切换操作有失败的可能,为了降低实际执行角色切换动作的风险,V4.2.2_CE 版本新增支持主备租户角色切换验证功能(SWITCHOVER/FAILOVER VERIFY),在切换命令后添加 VERIFY 关键字,可以提前验证对应操作是否可以成功执行,如对应操作不可执行,将给出报错信息,可参考官方提供的处理手段进行相应处理。
-
Tablet Location 主动广播/刷新
OceanBase 数据库当前已具备 Location Cache 周期性刷新机制,确保日志流 Location 信息更新的实时性和最终一致性。但 Tablet Location 只具备被动刷新能力,在 Tablet 和日志流的映射关系发生变化时,有概率触发 SQL 重试和读写报错。V4.2.2_CE 版本新增 Tablet Location 主动广播能力,减少 Transfer 后映射关系变化导致的 SQL 重试和读写报错;并提供主动刷新能力兜底,避免不可恢复的读写报错问题。
安全强化
-
OBServer 启动检查 OS 配置
不合理的 OS 配置可能引发系统问题,V4.2.2_CE 版本新增核心 OS 参数检查。提供宽松和严格检查两种模式:宽松模式下,OS 参数不符合要求时,日志报 WARNING ,不影响 OBServer 启动;严格模式下,OS 参数不符合要求时,报 ERROR 且 OBServer 无法启动。
-
MySQL PL 权限管理
MySQL 模式下新增 PL 权限管理,包括
CREATE ROUTINE
、EXECUTE
、ALTER ROUTINE
等权限控制。并增加支持视图mysql.procs_priv
,用于展示存储过程或函数授权信息。升级集群默认不开启 PL 权限管理功能,新建集群会自动开启。
易用性提升
-
性能诊断利器 —— SQLSTAT
OceanBase 数据库历史版本已提供通过 SQL AUDIT 和 PLAN STAT 来定位数据库性能问题的方式,但对于执行中的 SQL 或执行过去比较长时间的 SQL,缺少易用的定位手段。V4.2.2_CE 版本新增支持 SQLSTAT 功能,用于实时记录 SQL 执行状态和执行期间统计项信息。结合 WR 功能,可以较容易地找到对性能影响最大的 TOP SQL,进一步实现诊断自动化。可通过
[G]V$SQLSTAT
视图查看当前所有 SQL 的基本性能统计数据,通过CDB/DBA_WR_SQLSTAT
视图用于查看持久化后 TOP SQL 的性能统计信息。 -
时间模型统计 —— TIME MODEL
为了更加及时地反映数据库的负载情况,获取准确的 DB time,V4.2.2_CE 版本支持了 SESSION 、TENANT 级别的时间统计模型。新增 DB time、DB CPU、non idle wait time、idle wait time、background elapsed time、backgroud cpu time、background database time、background database non-idle wait time、background database idle wait time 等 9 个指标,以此进行问题诊断和性能调优。可通过
[G]V$SYSSTAT
和[G]V$SESSTAT
查看统计项信息,同时 WR 模块会以默认 1 小时间隔采集并持久化到DBA_WR_SYSSTAT
视图中。 -
手动 Transfer 分区
OceanBase 数据库现有的自动负载均衡机制可以自动调整分区分布,以达到在线扩缩容和分区均衡的目的。不过实际业务场景中,用户有定制数据分布的需求,希望将特定的分区进行聚合或打散。V4.2.2_CE 版本新增 Transfer 分区功能,用户可以选择将特定的分区迁移到特定的日志流上,并提供任务状态查看能力。
-
主备租户事件展示
OceanBase V4.2.2_CE 版本之前,主备租户 SWITCHOVER、FAILOVER 等事件记录在 RS 事件中,RS 事件会随时间清理,且租户级记录混在集群操作记录中不易查找。V4.2.2_CE 版本将主备租户操作记录拆分到每个租户下,通过
CDB/DBA_OB_TENANT_EVENT_HISTORY
视图透出。 -
PL&SQL 日志解耦
当前通过 PL 执行的 SQL 语句复用了 PL 的
trace_id
,导致同一个trace_id
关联的日志量过大,通过过滤日志排查问题比较耗费时间。V4.2.2_CE 版本将 PL 和 SQL 的日志解耦,为 PL 内部的 SQL 语句赋予独立的trace_id
,并在 SQL AUDIT 增加外层 PLtrace_id
记录,有效提高问题排查效率。 -
PL 执行时间统计
业务场景中,可能会遇到 PL 执行性能不符合预期的情况,目前缺少易用的手段快速分析主要耗时在内部 SQL 还是 PL 结构本身。V4.2.2_CE 版本新增 PL 结构执行时间统计,可直接通过
[G]V$OB_SQL_AUDIT
视图的PLSQL_EXEC_TIME
列来获取。 -
执行计划和限流同时绑定
目前 OUTLINE 支持执行计划绑定和限流绑定两种功能,但不支持同时指定。考虑部分客户场景既需要干预执行计划,又需要对高流量 SQL 限流的需求,V4.2.2_CE 版本开始允许用户在一条创建 OUTLINE 的语句中指定
max_concurrent()
和其他 HINT。因为执行计划不支持使用sql_text
指定通配符?
绑定,执行计划和限流同时绑定时也约束为同样行为。sql_id
绑定方式未发生变化。 -
动态配置 LOB 存储模式
当前 LOB 数据小于等于 4KB 时,会 INROW 存储(即行内存储),大于 4KB 时,会存入 LOB 辅助表。不超过行级存储规格限制的前提下,部分场景相比于存入辅助表,INROW 整存整取性能更好。因此该版本提供动态配置能力,用户可根据业务需求动态调整 INROW 大小。
性能报告
参考 V4.2.2_CE 的性能测试数据如下:
-
测试环境规格:
-
OBServer(1:1:1):
CPU 平台架构 x86_64 ECS 类型 ecs.g7.8xlarge 计算资源 32 核 内存资源 128GB 磁盘资源 系统盘 300G,2 * 400G 云盘,性能级别为 PL1 操作系统 CentOS 7.9 64 位 -
ODP(1):
CPU 平台架构 x86_64 ECS 类型 ecs.c7.16xlarge 计算资源 64 核 内存资源 128GB 操作系统 CentOS 7.9 64 位
-
-
测试版本:
版本 说明 OBServer (V4.2.2) - OBServer:OceanBase_CE 4.2.2.0
- REVISION: 1-87b81aa4bc5603ac81fd5e0c896b9ced01d78739
- BUILD_TIME: Jan 3 2024 14:53:33
ODP (V4.2.1) - OBProxy:OceanBase 4.2.1.0
- REVISION: 1-local-6599462fc897a4a46734d64585906ea80975a656
- BUILD_TIME: Oct 12 2023 21:03:30
-
租户规格:
- MAX_CPU = 26
- MEMORY_SIZE = 100g
SYSBENCH OLTP 负载测试
-
参数调优:
ALTER SYSTEM SET enable_sql_audit=false; ALTER SYSTEM SET enable_perf_event=false; ALTER SYSTEM SET syslog_level='PERF'; ALTER SYSTEM SET enable_record_trace_log=false;
-
测试规格:
obd test sysbench rn --tenant=perf --script-name=xxx.lua --table-size=1000000 --threads=xx --report-interval=1 --rand-type=uniform --time=30 --db-ps-mode=disable
-
测试结果:
-
Point Select 性能
Threads V4.2.2_CE zone1 QPS/95%rt(单位为 ms) V4.2.2_CE RANDOM QPS/95%rt(单位为 ms) 32 144562.71/0.26 150002.69/0.24 64 255157.22/0.30 279256.71/0.27 128 380483.96/0.51 489197.56/0.30 256 505118.71/0.90 791088.58/0.46 512 589809.56/1.42 1041150.67/0.83 1024 600025.98/3.30 1053486.24/2.18 -
Read Only 性能
Threads zone1 QPS/95%rt(单位为 ms) RANDOM QPS/95%rt(单位为 ms) 32 124411.49/4.49 131753.27/4.18 64 209992.12/5.57 241825.11/4.65 128 283414.89/8.74 414202.92/5.57 256 317012.12/19.29 638432.40/7.30 512 337949.54/39.65 798094.11/15.00 1024 331738.82/77.19 798567.76/34.95 -
Write Only 性能
Threads zone1 QPS/95%rt(单位为 ms) RANDOM QPS/95%rt(单位为 ms) 32 62842.72/3.96 46505.45/6.09 64 123026.83/4.65 88264.25/5.99 128 172264.95/6.09 153548.94/6.43 256 221739.40/9.73 227430.99/8.74 512 242756.24/23.10 292273.10/14.46 1024 252565.64/36.24 324863.22/35.59 -
Read Write 性能
Threads zone1 QPS/95%rt(单位为 ms) RANDOM QPS/95%rt(单位为 ms) 32 95173.19/7.98 83309.88/9.56 64 164018.31/9.06 151101.81/10.27 128 222046.91/22.69 268784.90/11.65 256 272321.09/33.72 394488.45/15.00 512 298693.98/53.85 523029.07/31.37 1024 292904.80/108.68 598383.51/50.11
-
BMSQL TPCC 测试
-
参数调优:
#ODP ALTER proxyconfig SET proxy_mem_limited='4G'; ALTER proxyconfig set enable_compression_protocol=false; #sys租户 ALTER SYSTEM SET enable_sql_audit=false; ALTER SYSTEM SET enable_perf_event=false; ALTER SYSTEM SET syslog_level='PERF'; ALTER SYSTEM SET enable_record_trace_log=false;
-
测试规格:
obd test tpcc rn --tenant=perf --tmp-dir=/data/2/tpcc --warehouses=1000 --load-workers=40 --terminals=800 --run-mins=5 -v -O 2
-
测试结果:
测试类型 zone1 RANDOM tpmC (NewOrders) 150354.01 303653.87 tpmTOTAL 334152.04 674530.08 Transaction Count 1671628 3395842
TPCH 测试
-
参数调优:
#sys租户 ALTER system flush plan cache GLOBAL; ALTER SYSTEM SET enable_sql_audit=false; ALTER SYSTEM SET enable_perf_event=false; ALTER SYSTEM SET syslog_level='PERF'; ALTER SYSTEM SET enable_record_trace_log=false; #测试租户 SET GLOBAL ob_sql_work_area_percentage = 80; SET GLOBAL ob_query_timeout = 36000000000; SET GLOBAL ob_trx_timeout = 36000000000; SET GLOBAL max_allowed_packet = 67108864; # parallel_servers_target = max_cpu * server_num * 8 SET GLOBAL parallel_servers_target = 624;
-
测试规格:
obd test tpch rn --user=root --test-server=server1 --tmp-dir=/data/2/ob --tenant=perf --remote-tbl-dir=/home/admin -s 100
-
测试结果:
Query RANDOM(单位为 s) Q1 2.26 Q2 0.50 Q3 1.49 Q4 0.61 Q5 0.97 Q6 0.15 Q7 1.41 Q8 0.94 Q9 4.42 Q10 1.10 Q11 0.18 Q12 1.18 Q13 1.93 Q14 0.30 Q15 0.43 Q16 0.61 Q17 1.63 Q18 0.93 Q19 0.64 Q20 1.43 Q21 2.70 Q22 1.20 Total 27.01
TPC-DS 测试
-
参数调优:
#sys租户 ALTER system flush plan cache GLOBAL; ALTER SYSTEM SET enable_sql_audit=false; ALTER SYSTEM SET enable_perf_event=false; ALTER SYSTEM SET syslog_level='PERF'; ALTER SYSTEM SET enable_record_trace_log=false; #测试租户 SET GLOBAL ob_sql_work_area_percentage = 80; SET GLOBAL ob_query_timeout = 36000000000; SET GLOBAL ob_trx_timeout = 36000000000; SET GLOBAL max_allowed_packet = 67108864; # parallel_servers_target = max_cpu * server_num * 8 SET GLOBAL parallel_servers_target = 624;
-
测试规格:
100GB
-
测试结果:
Query RANDOM(单位为 s) Q1 0.36 Q2 1.15 Q3 0.16 Q4 10.63 Q5 1.50 Q6 0.23 Q7 0.30 Q8 0.27 Q9 1.96 Q10 0.57 Q11 6.69 Q12 0.19 Q13 0.58 Q14 11.37 Q15 0.57 Q16 0.92 Q17 0.49 Q18 0.35 Q19 0.21 Q20 0.21 Q21 0.20 Q22 1.18 Q23 14.96 Q24 1.48 Q25 0.58 Q26 0.23 Q27 0.43 Q28 6.67 Q29 0.66 Q30 0.31 Q31 0.69 Q32 0.12 Q33 0.77 Q34 0.52 Q35 0.99 Q36 0.31 Q37 0.46 Q38 1.59 Q39 0.85 Q40 0.18 Q41 0.05 Q42 0.13 Q43 0.61 Q44 0.49 Q45 0.40 Q46 0.56 Q47 1.14 Q48 0.67 Q49 0.97 Q50 0.69 Q51 2.94 Q52 0.13 Q53 0.25 Q54 1.04 Q55 0.12 Q56 0.65 Q57 0.80 Q58 0.91 Q59 3.03 Q60 0.77 Q61 0.39 Q62 0.42 Q63 0.26 Q64 1.96 Q65 2.56 Q66 0.54 Q67 9.47 Q68 0.49 Q69 0.51 Q70 1.20 Q71 0.60 Q72 5.53 Q73 0.37 Q74 4.24 Q75 2.47 Q76 0.64 Q77 0.82 Q78 3.43 Q79 0.73 Q80 1.19 Q81 0.24 Q82 0.74 Q83 0.65 Q84 0.21 Q85 0.59 Q86 0.33 Q87 1.67 Q88 0.72 Q89 0.32 Q90 0.23 Q91 0.15 Q92 0.13 Q93 0.75 Q94 0.66 Q95 6.40 Q96 0.39 Q97 0.97 Q98 0.32 Q99 0.74 Total Time 142.27
兼容性变更
产品行为变更
新增如下变更:
功能 | 变更点说明 |
---|---|
单条日志大小扩展为 3.5 MB | 为解决单行数据量较大情况下,单条日志空间不足的问题,V4.2.2_CE 版本开始将单条日志大小扩展为 3.5 MB。需使用配套的 ob_admin 工具来查看 CLOG 内容。 |
存储不再使用 zlib 压缩算法 | V4.2.0_CE 版本中,存储已经禁止新建表使用 zlib 压缩,存量旧表仍可以使用 zlib 压缩。V4.2.2_CE 版本开始存储层不再支持使用 zlib 压缩算法,用户升级前如果使用了 zlib 压缩算法,须将数据表的压缩算法改成其它压缩算法;Clog 传输、TableAPI 传输等也均禁止使用 zlib 压缩算法。 |
MySQL 模式下,列注释不超过 1024 字符 | 之前版本,MySQL 模式下限制列注释最大 2048 字节,原生 MySQL 限制 1024 字符。新版本修改为和 MySQL 兼容,版本升级后,历史注释不受影响。 |
存储过程内部支持设置 ob_query_timeout 参数 |
V4.2.1_CE_BP3 之前的版本,存储过程内部执行 set ob_query_timeout=xxx 对于存储过程内后续 SQL 执行不会生效。考虑部分业务需求,V4.2.2_CE 版本支持了存储过程内设置超时时间的行为:存储过程内设置超时时间后,会更改 SESSION 上记录的超时时间,因此不仅对于存储过程内后续执行的 SQL 有效,存储过程执行完,继续执行的外部 SQL 语句依旧会看到更新后的超时时间。如果只想存储过程内部的 SQL 可见,需要在存储过程执行结束前重新设置为原有的超时时间。 |
INT 列类型增长支持 Online | 主键列/分区列/索引列/生成列/被生成列依赖的列/有唯一约束的列/有 Check 约束的列,INT 列类型增长变更为 Online。 |
OUTLINE 同时绑定执行计划和限流功能 | V4.2.2_CE 版本新增支持 CREATE OUTLINE 同时指定计划绑定和限流,涉及 ALTER OUTLINE 的流程已废弃。 |
视图变更
新增如下变更:
视图 | 变更类型 | 变更说明 |
---|---|---|
DBA_OB_TRANSFER_PARTITION_TASKS | 新增 | 展示本租户下所有正在处理的 Transfer Partition 任务。 |
CDB_OB_TRANSFER_PARTITION_TASKS | 新增 | 展示所有租户当前正在处理的 Transfer Partition 任务。仅适用于 SYS 租户。 |
DBA_OB_TRANSFER_PARTITION_TASK_HISTORY | 新增 | 展示当前租户下所有执行 Transfer Partition 的任务历史。 |
CDB_OB_TRANSFER_PARTITION_TASK_HISTORY | 新增 | 展示所有租户执行 Transfer Partition 的任务历史。仅适用于 SYS 租户。 |
[G]V$OB_PL_CACHE_OBJECT | 新增 | 展示 PL 相关的缓存对象信息。 |
[G]V$OB_SQL_AUDIT | 新增列 |
|
[G]V$SQLSTAT | 新增 | 展示 SQL 的基本性能统计数据。 |
DBA_WR_SQLSTAT | 新增 | 用于查看本租户 TOP SQL 的性能统计信息。 |
CDB_WR_SQLSTAT | 新增 | 用于查看所有租户 TOP SQL 的性能统计信息。 |
DBA_WR_SQLSTAT | 新增 | 展示本租户下 WR 采集的 SQL 文本。 |
CDB_WR_SQLSTAT | 新增 | 展示系统租户下 WR 采集的 SQL 文本。 |
[G]V$OB_CGROUP_CONFIG | 新增 | 用于快捷查询 OBServer 的 cgroup 配置,每行表示一级 cgroup 配置,所有信息取自 OBServer 安装目录下的 cgroup 目录。 |
[G]V$OB_ACTIVE_SESSION_HISTORY | 新增 | 用于查看 OceanBase 特有的 ASH 统计信息。 |
DBA_WR_ACTIVE_SESSION_HISTORY | 新增列 | 新增 TOP_LEVEL_SQL_ID ,PLSQL_ENTRY_OBJECT_ID ,PLSQL_ENTRY_SUBPROGRAM_ID ,PLSQL_OBJECT_ID ,PLSQL_SUBPROGRAM_ID ,IN_PLSQL_EXECUTION ,IN_PLSQL_COMPILATION ,PLSQL_ENTRY_SUBPROGRAM_NAME ,PLSQL_SUBPROGRAM_NAME 列信息,完善 PLSQL 统计。 |
CDB_WR_ACTIVE_SESSION_HISTORY | 新增列 | 新增 TOP_LEVEL_SQL_ID ,PLSQL_ENTRY_OBJECT_ID ,PLSQL_ENTRY_SUBPROGRAM_ID ,PLSQL_OBJECT_ID ,PLSQL_SUBPROGRAM_ID ,IN_PLSQL_EXECUTION ,IN_PLSQL_COMPILATION ,PLSQL_ENTRY_SUBPROGRAM_NAME ,PLSQL_SUBPROGRAM_NAME 列信息,完善 PLSQL 统计。 |
[G]V$OB_SESS_TIME_MODEL | 新增 | 展示 SESSION 级别 TIME MODEL 统计项。 |
[G]V$OB_SYS_TIME_MODEL | 新增 | 展示租户级别 TIME MODEL 统计项。 |
DBA_WR_SYS_TIME_MODEL | 新增 | 展示租户级别 TIME MODEL 统计项的 WR 数据。 |
CDB_WR_SYS_TIME_MODEL | 新增 | 展示租户级别 TIME MODEL 统计项的 WR 数据。仅适用于 SYS 租户。 |
DBA_WR_SYSTEM_EVENT | 新增 | 展示本租户的持久化后的租户级等待事件信息。 |
CDB_WR_SYSTEM_EVENT | 新增 | 展示所有租户的持久化后的租户级等待事件信息。 |
DBA_WR_EVENT_NAME | 新增 | 展示本租户的持久化后的租户级等待事件名称。 |
CDB_WR_EVENT_NAME | 新增 | 展示所有租户的持久化后的租户级等待事件名称。 |
DBA_OB_SYS_VARIABLES | 新增 | 展示当前租户的系统变量配置。 |
CDB_OB_SYS_VARIABLES | 新增列 | 新增 DEFAULT_VALUE、ISDEFAULT 列信息。记录系统变量的默认值。 |
[G]V$OB_PL_CACHE_OBJECT | 新增 | 展示 PL 相关缓存对象的基础信息。 |
配置项变更
配置项 | 变更类型 | 变更说明 |
---|---|---|
tableapi_transport_compress_func | 更名 | 将 tableapi_transport_compress_func 更名为 kv_transport_compress_func ;将 kv_transport_compress_func 配置项的级别由集群级调整为租户级。用于控制 OBKV 的查询请求 RPC 回包是否开启压缩算法进行压缩。 |
kv_transport_compress_threshold | 新增 | 新增租户级配置项,配合 kv_transport_compress_func ,用于指定需要进行压缩的 OBKV 查询结果集的最小阈值。默认值为 10KB,表示结果集大于 10KB 时,才会进行压缩。 |
ha_diagnose_history_recycle_interval | 新增 | 新增集群级配置项,用于控制 Transfer 诊断统计历史信息的清理时间间隔。默认为 7 天。 |
strict_check_os_params | 新增 | 新增启动项,用于指定启动时对 OS 参数进行宽松模式还是严格模式检查。默认为 False,表示不符合 OS 参数要求时,报 warning,不影响 OBServer 正常启动。 |
range_optimizer_max_mem_size | 变更 | 取值范围由 [16M,1G] 调整为 [0M,+∞);默认值由 128 M 调整为 0M,即不限制 Query Range 模块内存使用。 |
系统变量变更
系统变量 | 变更类型 | 变更说明 |
---|---|---|
automatic_sp_privileges | 新增 | 新增 GLOBAL 级系统变量,用于控制是否为存储过程创建者自动授予 ALTER 和 EXECUTE 该存储过程的权限。默认为 True,表示自动赋予。 |
ob_enable_pl_cache | 新增 | 新增 GLOBAL/SESSION 级系统变量,用于控制是否开启 PL Cache 。默认为 True ,表示开启。更改为 False 后,每次执行存储过程都会触发重新编译。 |
sql_mode | 默认值变更 | 将默认值由 “STRICT_ALL_TABLES,NO_ZERO_IN_DATE” 变更为“STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER“。 |
lc_time_names | 新增 | 新增 GLOBAL/SESSION 级系统变量,用于控制日期/月份或缩写的名称展示使用哪种语言。默认为 en_US 。 |
周边配套
OceanBase 数据库 V4.2.2_CE 版本推荐使用的平台工具版本如下:
组件 | 版本 | 备注 |
---|---|---|
ODP | V4.2.1 | V4.2.3 版本全面适配 |
OCP | V4.2.1_CE_BP1 | - |
OBD | V2.6.0 | - |
ODC | V4.2.3 | V4.2.4 版本全面适配 |
OBCDC | V4.2.2 | - |
OMS | V4.2.1_CE | 仅支持 OBServer V4.2.2_CE 版本作为目标端;不支持拉取 OBServer V4.2.2_CE 版本增量数据 |
OBClient | V2.2.3 | V2.2.5 版本全面适配 |
LibOBClient | V2.2.3 | V2.2.5 版本全面适配 |
升级说明
- 支持 V4.2.1_CE_BP2 及之前的版本升级到 V4.2.2_CE 版本,V4.2.1_CE_BP3 及之后版本不支持升级到 V4.2.2_CE 版本。
- ODP 和 OBServer 升级顺序:建议先升级 OBServer V4.2.1_CE 版本到 OBServer V4.2.2_CE 版本,再升级 ODP 到 V4.2.3 版本。
- 升级期间,系统会自动禁用合并和 DDL 操作,升级完成后恢复正常使用。
1、 oceanbase-ce-4.2.2.0-100000192024011915.el7.aarch64.rpm 82.3MB
2、 oceanbase-ce-4.2.2.0-100000192024011915.el7.x86_64.rpm 100.82MB
3、 oceanbase-ce-4.2.2.0-100000192024011915.el8.aarch64.rpm 82.34MB
4、 oceanbase-ce-4.2.2.0-100000192024011915.el8.x86_64.rpm 100.84MB
5、 oceanbase-ce-cdc-4.2.2.0-100000042024011415.el7.aarch64.rpm 91.92MB
6、 oceanbase-ce-cdc-4.2.2.0-100000042024011415.el7.x86_64.rpm 110.51MB
7、 oceanbase-ce-cdc-4.2.2.0-100000042024011415.el8.aarch64.rpm 93.2MB
8、 oceanbase-ce-cdc-4.2.2.0-100000042024011415.el8.x86_64.rpm 111.81MB
9、 oceanbase-ce-libs-4.2.2.0-100000192024011915.el7.aarch64.rpm 143.93KB
10、 oceanbase-ce-libs-4.2.2.0-100000192024011915.el7.x86_64.rpm 154.61KB
11、 oceanbase-ce-libs-4.2.2.0-100000192024011915.el8.aarch64.rpm 150.75KB
12、 oceanbase-ce-libs-4.2.2.0-100000192024011915.el8.x86_64.rpm 159.34KB
13、 oceanbase-ce-sql-parser-4.2.2.0-100000192024011915.el7.aarch64.rpm 1.91MB
14、 oceanbase-ce-sql-parser-4.2.2.0-100000192024011915.el7.x86_64.rpm 1.94MB
15、 oceanbase-ce-sql-parser-4.2.2.0-100000192024011915.el8.aarch64.rpm 1.91MB
16、 oceanbase-ce-sql-parser-4.2.2.0-100000192024011915.el8.x86_64.rpm 1.94MB
17、 oceanbase-ce-table-4.2.2.0-100000192024011915.el7.aarch64.rpm 49.11MB
18、 oceanbase-ce-table-4.2.2.0-100000192024011915.el7.x86_64.rpm 48.34MB
19、 oceanbase-ce-table-4.2.2.0-100000192024011915.el8.aarch64.rpm 49.18MB
20、 oceanbase-ce-table-4.2.2.0-100000192024011915.el8.x86_64.rpm 48.42MB
21、 oceanbase-ce-utils-4.2.2.0-100000192024011915.el7.aarch64.rpm 70.68MB
22、 oceanbase-ce-utils-4.2.2.0-100000192024011915.el7.x86_64.rpm 87.09MB
23、 oceanbase-ce-utils-4.2.2.0-100000192024011915.el8.aarch64.rpm 70.7MB
24、 oceanbase-ce-utils-4.2.2.0-100000192024011915.el8.x86_64.rpm 87.16MB