版本信息

信息 描述
发布时间 2023-04-19
版本号 V3.1.5
提交号 6d73a676

概要说明 间隔十余月,OceanBase 迎来了社区版 V3.1.5 版本的正式发布。该版本着重提高内核稳定性,特性上 OBKV 支持了基于热 key 的限流,OBCDC 通过架构优化降低了对使用者机器的资源要求。同时为满足用户对大宽表的期待,将单表列限制从 512 列优化提升至 4096 列。针对用户反馈及内部测试发现的问题,该版本也重点进行了修复。

特性更新

多模数据库(OBKV)支持基于热 key 的限流 新增支持多模数据库(OBKV)基于热 key 的限流功能。增加限流阈值设置,通过统计当前 QPS 最大的 K 个 rowkey 是否超过阈值决定是否执行限流。采用平滑的分梯度部分限流方案,避免简单粗暴切断流量对业务的影响。支持 tableapi 及 hbase 操作。核心能力如下:

  • 新增租户级配置项 kv_hotkey_throttle_threshold:指示OBKV限流阈值。当阈值为0时表示限流功能关闭;阈值大于 0 时,在一个epoch(2秒时间区间)内,访问数大于该阈值的 rowkey 会考虑在下一个 epoch 中被限流。取值范围为 [0, 1000000000000000000L] ,默认为0。
  • 新增虚拟表 __all_virtual_kv_hotkey_stat:用于记录被限流的 topK hotkey。
  • 新增视图 [G]V$OB_KV_HOTKEY_STAT:用于查看 topK hotkey 信息。系统租户下可查看所有租户信息,普通租户下只能查看本租户信息。GV$OB_KV_HOTKEY_STAT 可查看所有 server 上的信息,V$OB_KV_HOTKEY_STAT 只能查看本 server 上的信息。

同步链路系统(OBCDC)架构优化 早期 OceanBase 同步链路系统(OBCDC)对使用者的机器性能(内存大小/磁盘性能)要求比较高,V3.1.5 社区版本优化了 OBCDC 架构,减少内存使用,降低资源依赖,提升性能与稳定性。

单表支持列数上限从512提升至4096列 OceanBase将单表支持列数上限提升至4096列,通过大宽表设计,减少多表间的关联操作,提高该场景下数据库查询性能和数据处理能力。

  • 特别说明:有主键表可以支持指定 4096 列,无主键表因系统生成隐藏主键会占用 1 列,用户只可以指定 4095 列。

CLOG 日志文件支持按绝对值限制存储空间 早期 OceanBase clog 日志文件的存储空间阈值仅支持按照磁盘空间百分比进行限制,缺少直观性;同时对于部分共享存储,也无法准确表达使用空间水位大小。V3.1.5 社区版本在之前设计的基础上,支持使用空间绝对值限制的方式,替换固定磁盘规格限制,更灵活和易用。

  • 新增集群级启动配置项 log_disk_size:用于控制单台 observer 存储 clog 日志文件的最大空间使用量。取值范围 [0G, +∞),默认“0G”,表示以磁盘总空间为准。当 log_disk_size 配置为负数或者配置大于磁盘总空间时,会造成 observer 初始化失败。参数可修改,但需要重启 observer 才生效。
  • log_disk_size 配置大于 0 时,磁盘使用上限由“磁盘总容量 * 可用百分比配置”变更为“log_disk_size * 可用百分比配置”。

新增支持 default_storage_engine 系统变量 为了方便 python django 框架适配,新增支持 default_storage_engine 系统变量,默认“OceanBase”。

行为变更

  • 租户级配置项 undo_retention 默认值从“0”变更为“1800”,表示转储中默认保留 1800 秒的多版本数据。

问题修复 (1)修复约束名为空时未查重,导致出现重名约束进而导致刷 schema hang 住的问题。 (2)修复合并时卡住,报错 buffer not enough 问题。 (3)修复恢复租户时,clog 回放卡住问题。 (4)修复强制取消备份失败,备份状态一直为 stopping 的问题。 (5)修复 FULL 副本偶然出现 replica is not readable,查询耗时高的问题。 (6)修复 backup zone 耗时过长导致数据备份失败的问题。 (7)修复 add partition 时,sql 卡住的问题。 (8)修复执行 6 亿数据的存储过程,导致内存不足,kvcache清理不掉的问题。 (9)修复 insert ... on duplicate key update 语句报 5024-重复主键的问题。 (10)修复 observer.log 日志有大量 Fail to erase key from cache 报错的问题。 (11)修复 slog 回放报错导致备库重启失败的问题。 (12)修复 R 副本切换 F 副本失败的问题。 (13)修复扩容 datafile_size 后,部分 server 不生效的问题。 (14)修复 insert into ignore 执行出现卡住的问题。 (15)修复 JSON 生成列创建索引内存爆的问题。 (16)修复开启 schema history 回收后,可能导致物理恢复失败的问题。 (17)修复备份恢复后,索引状态不符合预期的问题。 (18)修复恢复中的租户开启归档失败的问题。 (19)修复开 ps 后,select NULLIF(NULL, '') from dual 返回 4016 的问题。 (20)修复自动清理任务正常调度时,预期被清理的 backup_piece 未删除的问题。 (21)修复只读视图不支持读取后写入其他表的问题。 (22)修复 replace into 多条数据到混合字符集的表,查询数据有乱码的问题。 (23)修复 json 类型转换为 int 类型失败的问题。 (24)修复 from_base64() 的参数为换行符、制表符时,与 mysql 不兼容的问题。 (25)修复 sql 改写时丢失 hint 的问题。 (26)修复当备份清理任务在 doing 阶段发生切主时,切主后继续清理任务可能会报 4016 问题。 (27)修复 select udf 后 group by having聚合函数嵌套里用 select 调用形参 udf , 系统无法识别传参字段的问题。 (28)修复同样 sql 执行计划有差异导致返回结果不一致的问题。 (29)修复 PL 中游标使用 ROWID 别名触发 ORA-00904: invalid identifier 报错的问题。 (30)修复几类特殊场景下节点出 core 的问题。

项目简介

OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.

🚀 Github 镜像仓库 🚀

源项目地址

https://github.com/oceanbase/oceanbase

发行版本 26

v4.1.0_BP3_HF1

全部发行版

贡献者 125

全部贡献者

开发语言

  • C++ 96.9 %
  • Python 2.0 %
  • Yacc 0.5 %
  • C 0.2 %
  • CMake 0.2 %