Oceanbase-py

Latest version: v0.0.1.2

Safety actively analyzes 682361 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 15 of 30

3.11

3.5

| 存储不再使用 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 | 新增列 | <ul><li>新增 PL_TRACE_ID 列,用于记录外层 PL 的 trace_id,使其可以与 PL 内部 SQL 关联。 </li><li>新增 PLSQL_EXEC_TIME 列,用于记录 PL 执行耗时(不包括 SQL 执行时间),单位为 us。 </li></ul>|
| [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 版本推荐使用的平台工具版本如下:

| 组件 | 版本 | 备注 |
| --- | --- | --- |

3.2

版本信息
| **信息** | **描述** |
| --- | --- |
| 发布时间 | 2022-11-02 |
| 版本号 | V4.0.0_CE |
| 提交号 |6af7f9ae79cd0ecbafd4b1b88e2886ccdba0c3be |
| OBServer RPM 版本号 | oceanbase-ce-4.0.0.0-100000272022110114 |

版本概要

本版本的核心能力特性如下:

* 架构升级与受益

支持单机分布式一体化架构,包含自适应日志流、支持超大事务、RTO 时间降低到 8s 以内、NTP 服务依赖优化、支持分区数量能力上限等版本基础核心能力构建。

* 内核能力增强

Online DDL 能力增强,支持租户级备份,字符集扩展,支持数据编码,支持 IOPS 隔离,LOB 规格上限扩展,支持表锁和死锁检测等。

* 兼容性增强

支持 DDL 语句的外键约束,支持视图列信息展示,支持 DML 触发器,支持更多 SQL MODE 和函数等。扩展支持 SEQUENCE 对象,支持存储程序,支持 SQL 文本中的预处理,支持自增列做为分区键。

* 性能大幅提升

* SYSBENCH 性能优化,综合读写性能(Read Write)1024 并发测试性能相比于 V3.1 版本提升 1 倍。

* TPCH 查询性能优化,100GB 数据量顺序执行 22 条 SQL,整体性能相比于 V3.1 版本提升 5 倍。

* 运维能力提升

支持全链路追踪,支持 SESSION 状态的监控和诊断(ASH),标准化视图优化,支持 Schema History 回收功能,支持自动清空回收站功能等。

特性更新

架构升级与收益

* 自适应日志流介绍

OceanBase 早期版本的架构体系里以分区为基本单元进行操作,当系统内的分区数量达到一定程度之后,以分区为单元的操作的消耗也随之增大,逐渐形成了 OceanBase 的使用痛点:单节点支持的分区数量受到限制,单节点上涉及跨分区的数据修改也需要两阶段提交协议来保证事务的原子性等问题。

日志流是由 OceanBase 自动创建和管理的实体,它代表了一批数据的集合,包括若干分区和有序的 Redo 日志流。在新的系统架构下,一个 Unit 内的所有分区的事务修改日志可以都记录在一个日志流中,通过日志流把修改同步到其他 Zone 的对应 Unit 上。OceanBase 的每个租户每有一个 Unit,就会有一个对应的日志流。系统会把一个日志流和其所对应的分区关系固定下来,只有迁移发生时,才会改变这个对应关系。

* 支持超大事务

基于新的自适应日志流架构,对事务引擎进行重新设计,解决了分布式数据库普遍的大事务场景使用痛点,比如事务大、参与者数量多、事务提交卡等问题。新事务引擎能稳定应对在线业务、批处理、订正数据等多种业务场景,使得用户在各自繁杂的业务场景下可以放心的使用数据库。

* RTO < 8s

基于全新的自动选主协议以及全面的探活机制,进一步将机器故障场景下系统恢复时间降低到 8s 以内,帮助业务系统更快恢复,最大程度减少业务影响,给业务带来持续可用的能力。

* NTP 服务优化

基于全新的自动选主协议,取消了对 NTP 时钟的依赖,打破原来早期版本对所有节点的时钟偏差控制在 100ms 以内的强需求。OceanBase V4.0 版本允许的时钟偏差可以达到 2s,同时支持动态修改时钟,不会对数据正确性和集群稳定运行带来影响。

* 优化分区能力上限

在自适应日志流的架构设计下,系统内部一个 Unit 内的所有分区共享一个资源组,大大降低了早期版本每个分区独立申请保存系统资源,提升系统资源的利用率,因此不再需要根据配置限制 OBServer 节点的分区上限个数,但分区上限仍受机器可用物理资源限制。

内核能力增强

* Online DDL 能力增强

在 OceanBase 早期的版本中,由于架构设计上的限制,对数据库 Online DDL 能力进行了有限支持,例如不支持主键修改操作给业务使用带来了诸多不便。得益于新版本一体化的架构设计,OceanBase 针对涉及到数据搬迁的 Online DDL 操作进行增强支持,主要包括:

* 支持添加主键、修改主键和删除主键

* 支持添加外键、删除外键

* 支持修改列名和列类型,包括字符、数值、日期等类型的相互转换

* 支持普通表转换为分区表

* 支持在线修改表或列的字符序

* 支持租户级备份

多租户是 OceanBase 的核心价值能力之一,在大多数客户系统中,用户都选择在同一个集群中创建了多个租户,每个租户代表一个业务单元,根据业务的不同种类和对客户的重要程度,需要有不同的备份频率和策略进行细粒度支持。在 OceanBase V4.0 版本中将集群级别粒度的备份能力细化拆分到租户级别粒度,支持按租户级别的备份,也支持将备份数据恢复到新租户。优化数据备份快照保留策略,减少备份期间的磁盘空间影响。同时拆分数据备份与日志备份存储目录,支持分别接入不同性能的备份介质。

有关租户级备份的更多详细信息,参见 [备份恢复](https://github.com/oceanbase/oceanbase-doc/blob/V4.0.0/zh-CN/5.administrator-guide/10.high-data-availability/2.backup-and-restoration-management/1.overview-of-physical-backup-and-recovery.md)

* 扩展更多字符集

支持 UTF8、UTF16、GBK、GB18030 和 BINARY 字符集,新增支持 UTF8MB4_BIN、UTF16_BIN、GBK_BIN、GB18030_BIN、UTF8MB4_GENERAL_CI、 UTF16_GENERAL_CI、GBK_CHINESE_CI和GB18030_CHINESE_CI 排序规则。

* 向量化引擎开源

OceanBase 在商业版 V3.2.3 全面实现了向量化引擎,以 Architecture aware 的设计改造了全部的算子和绝大部分常用的执行表达式,充分发掘现代 CPU 的 cache 特性以及优化指令,并应用于 TPC-H 的 benchmark 中。向量化带来了大量的算法优化可能,通过在向量化的框架下进行算法和数据结构优化,实测整体执行性能相比原先非向量化执行引擎性能提升普遍在 4-5 倍,很多算子和单场景可获得 10 倍以上的性能提升。在本次版本发布中,OceanBase 将其向量化引擎能力全部开源,帮助用户在 OLAP 场景下获取更好的性能。

* 数据编码开源

OceanBase 通过数据编码压缩技术实现了数据的高压缩比,是帮助用户减小存储成本重要技术手段。OceanBase 本次开源多种数据编码方法,包括字典编码、RLE 编码、常量编码、差值编码、前缀编码、列间编码等,并支持每一列自动选择最合适的数据编码。通过编码和压缩,使用相同的块大小(16KB)、以及相同的压缩算法(lz4),同样的数据存放在 OceanBase 中,要比在 MySQL 5.7 中平均节省一半的空间,同时没有损失任何查询性能。

有关数据编码的更多详细信息,参见 [数据压缩与编码](https://github.com/oceanbase/oceanbase-doc/blob/V4.0.0/zh-CN/7.reference/1.oceanbase-database-concepts/9.storage-architecture-1/2.data-storage/4.compression-and-encoding.md)

* 支持 IOPS 隔离

OceanBase 早期的版本已经支持了租户级别的 CPU 和内存隔离,V4.0 版本开始支持租户间 IOPS 隔离,租户之间彼此感知不到对方对磁盘带宽的占用,避免租户间业务的 IO 资源争抢,实现完备的租户资源隔离能力。

用户通过 UNIT CONFIG 设置 UNIT 的资源规格,其中 MIN_IOPS、MAX_IOPS、IOPS_WEIGHT 是 IOPS 隔离相关资源,租户的可用资源与 UNIT 绑定。通知支持动态调整租户的 IOPS 规格,修改 UNIT CONFIG 中的 IOPS 相关设置即可实时生效。在租户内部,支持通过配置项 io_category_config 分配各类别 IO(业务请求、系统日志等)请求的百分比,进而细粒度控制 IO 资源分配与调度。

* LOB 规格上限扩展

在 OceanBase 早期的版本中,LOB 数据存储大小限制在 48MB 以内,这对客户使用 LOB 带来了强约束限制。在本次架构升级中,通过存储层将 Lob 宏块的数据拆成多条 Lob Meta 进行存储,取数据的时候再将多条 Lob Meta 中的数据聚合成一个连续 Buffer 返回给 SQL 层处理,这样突破了数据存储大小的限制,使得 LOB 存储上限扩展达到了 512MB,后续将持续优化到 TB 级别。

* 支持表锁和死锁检测

表锁允许业务以指定的方式锁定表或分区,避免业务并发操作造成数据破坏。在 OceanBase V4.0 版本中支持了 Online DDL 操作,因此必须配套表锁保护 DDL 与 DML 并发时的正确性问题。新增支持 LOCK TABLE 语法,支持 SHARE 和 EXCLUSIVE 两种锁定模式,同时支持对锁冲突的死锁检测。

MySQL兼容性增强

* 支持 DDL 语句的外键约束

OceanBase 数据库默认开启外键约束检查,外键约束检查开关由租户变量 FOREIGN_KEY_CHECKS 来控制,要求约束的列的值取自于另外一个表的主键列。在早期的版本中,外键约束检查仅对 DML 操作有效,DDL 操作不受影响。OceanBase V4.0 版本中支持了 FOREIGN_KEY_CHECKS 系统变量对 DDL 部分的影响,其行为保持与 MySQL 兼容。

* 支持视图列信息展示

在 MySQL 数据库中,视图列信息和表列信息一样,被作为基础的元信息被存储在数据字典中,并通过 INFORMATION_SCHEMA.COLUMNS 显示给用户。OceanBase 数据库内部仅对表列信息进行了持久化存储,V4.0 版本通过采用动态解析视图定义的方法,避免了对视图复杂的依赖关系解析,实现在 INFORMATION_SCHEMA.COLUMNS 中展示视图列信息。

* SQL Mode 扩展支持

扩展支持 MySQL 默认开启的 SQL Mode,新增支持 NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO 和 NO_AUTO_CREATE_USER 三个 SQL Mode,产品行为与 MySQL 兼容。针对 NO_ENGINE_SUBSTITUTION 仅支持语法兼容。

* 支持 SQL 文本中的预处理

支持 SQL 文本中的预处理语句(Prepared Statements),Prepared Statements 接口使用二进制协议相比交互式SQL 接口具有更高的执行效率,使用方法大体如下:

* PREPARE 准备执行语句。`PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2))';`

* EXECUTE 执行准备好的语句。`SET a = 3; SET b = 4; EXECUTE stmt1 USING a, b;;`

* DEALLOCATE PREPARE 释放一个准备好的语句。`DEALLOCATE PREPARE stmt1;`


* 支持自增列做为分区键

例如:


create table t2(inv_id bigint not null auto_increment ,c1 bigint, primary key (inv_id) ) partition by hash(inv_id) partitions 8;


使用自增列作为分区键时需要额外注意,自增列的值全局唯一,但在分区内不保证始终增长,和原生 MySQL 行为不同。和其他分区方式相比,对这类分区表的插入操作性能会有一定的下降。

* 支持 SEQUENCE 对象

扩展支持 SEQUENCE 对象,满足业务系统对 SEQUENCE 对象的依赖诉求,降低客户在业务迁移过程中的适配复杂度。支持 CREATE/ALTER/DROP SEQUENCE 对象,支持获取 CURRVAL、NEXTVAL 和重置取值等对象操作,支持的对象取值范围从 INT64_MIN 到 INT64_MAX。

* 支持存储程序

支持兼容 MySQL 5.7 语法的存储程序(包含存储过程和存储函数),支持游标、流程控制语句、异常处理、存储程序相关的DDL操作和视图和状态查询。同时扩展支持多个系统包,例如 DBMS_STATS、DBMS_SESSION 等。

* 支持 DML 触发器

支持在表上创建触发器,兼容 MySQL 5.6 语法。当在该表上 DML 操作满足条件时、触发用户自定义行为。

* 支持更多函数

* 支持函数 ADDTIME(),将指定的时间间隔添加到给定的日期和时间。例如:`SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');`

* 支持函数 DAYNAME(),返回给定日期的工作日名称。例如:`SELECT DAYNAME('2018-01-8');`

* 支持聚合函数 BIT_AND()/BIT_OR()/BIT_XOR(),返回表达式的按位与/或/异或的运算结果。

* 新增函数 UUID_SHORT(),返回 64-bit 无符号整数。例如:`SELECTUUID_SHORT();`

运维能力提升

* 支持全链路追踪

OceanBase 作为一款久经沙场的分布式数据库,其内部数据访问的链路已经非常复杂,当线上出现超时等问题的时候,往往无法有效快速定位问题出现的第一现场,需要依靠有经验的运维人员对追个环节进行排查,验证影响到运维效率和故障影响速度。OceanBase V4.0 版本设计了一套全链路追踪的机制,能够提升全链路问题定位的效率,贯穿从业务 APP > 客户端驱动(JDBC, OCI) > 代理(OBProxy)> 数据库节点(OBServer)到全部流程,用户通过 PL/SQL 或 OBClient 接口在应用程序 APP 中设置相关标识信息(MODULE/ACTION/CLIENT_INFO/CLIENT_IDENTIFIER)到正在使用的链接中,运维人员可以通过 PL/SQL 程序包,控制相关应用程序设置的标识信息维度是否打开全链路跟踪诊断以及设置诊断输出策略;诊断日志以 OpenTracing 数据模型输出到 OBProxy 和 OBServer 日志文件中进行保存, 通过对诊断日志解析, 即可达到追踪每个 SQL 每个事务在全链路中执行耗时等相关诊断信息。

有关全链路追踪的详细介绍,参见 [全链路追踪](https://github.com/oceanbase/oceanbase-doc/blob/V4.0.0/zh-CN/5.administrator-guide/11.operation-and-maintenance-management/5.daily-inspection/2.full-link-detection/1.full-link-diagnosis-overview.md)

* 支持 SESSION 状态的监控和诊断(ASH)

OceanBase 数据库早期版本已经支持获取当前正在执行的 SQL 的状态信息,包括等待事件等信息,但只能通过 __all_virtual_session_wait 查询到 session 最近一次等待事件。OceanBase V4.0 版本支持更全面的 session 与等待事件之间的关系图(ASH),不仅包含当前执行的 SQL 的状态,还包含 SESSION、USER、SQL、WaitEvent 等多个维度状态历史信息。ASH 能够以 1s 为周期采样系统中所有 Active Session 状态,采用过程中全程不加锁不影响业务 SQL 的正常执行。OCP 通过对这些状态采样信息进行综合汇总分析,帮助用户了解过去一段时间里系统的负载以及等待状态,及时发现并预警问题。


* 支持实时执行计划监控

OceanBase 在 SQL 执行计划的诊断中引入了 SQL Plan Monitor, SQL Plan Monitor 提供了关于逻辑执行计划、物理执行计划、算子吐行数、算子开始/结束时间点等信息, SQL Plan Monitor 信息只能在 SQL 执行完毕后获得,可以通过 GV$SQL_PLAN_MONITOR 租户级视图获取相关信息。OceanBase V4.0 版本支实时 SQL Plan Monitor,可以实时的查看当前租户各 SQL 执行计划状态,在客户实际业务场景或者是诊断分析场景, 如果存在 SQL 卡住的问题, 此时通过实时 SQL Plan Monitor 也可以查询各个执行线程执行算子的执行状态。

* 支持 Schema History 回收功能

解决 Schema History 只增不删导致 Schema History 过多,影响 OBServer 启动慢的问题。通过隐藏配置项 _schema_history_recycle_interval 控制 Schema History 回收周期,该配置项缺省值是 0,表示关闭 schema history 回收功能。

* 支持自动清空回收站功能

OceanBase 数据库回收站提供以租户为单位,当磁盘空闲空间不足时,按照 FIFO 策略,自动清理回收站空间的功能。增加配置项 recyclebin_object_expire_time 用于指定回收站中对象的过期时间。

性能报告

测试环境规格:

| **CPU 平台架构** | **x86_64** |
|---------|----------|
|ECS 类型 |ecs.g7.8xlarge|
|计算资源 |32核|
|内存资源 |128GB|
|磁盘资源| 500G ESSD云盘|
|操作系统| CentOS Linux release 7.9.2009 (Core)|

测试版本:

| **产品** | **版本信息** |
|---------|----------|
|OBServer (V4.0.0_CE) | observer (OceanBase_CE 4.0.0.0)<br>REVISION: 100000152022102115-06570c6f755c1fabe3ca9a25bef54af77e7c8c9c<br>BUILD_TIME: Oct 21 2022 17:22:38|
|OBProxy (V4.0.0)| obproxy (OceanBase 4.0.0 2)<br>REVISION: 1-local-b1ef5a6b5b196916ae26bdea814765e5165a801f<br>BUILD_TIME: Oct 22 2022 11:06:04|

SYSBENCH OLTP 负载测试

**测试方案:**

1. 通过 OBD 部署 OceanBase 集群,ODP 和 Sysbench 单独部署在一台机器上, 作为客户端的压力机器。

2. OceanBase 集群规模为 1:1:1,部署成功后先新建跑 Sysbench 测试的租户及用户(sys 租户是管理集群的内置系统租户,请勿直接使用 sys 租户进行测试),设置租户的 Primary Zone 为 RANDOM,RANDOM 表示新建表分区的 leader 随机到这 3 台机器。

3. 启动 Sysbench 客户端,进行 point_select、read_write、read_only 和 write_only 测试。

4. 每轮测试 --time 设置为 60s,线程数取值可以为 32/64/128/256/512/1024。

5. 测试数据量为 30 张非分区表,100 万行数据,即 --tables=30,--table_size 设置为 1000000。

**租户规格:**

* MAX_CPU = 26

* MEMORY_SIZE = 70g

**测试结果:**

**Point Select 性能**

| **Threads** | **V4.0.0_CE QPS** | **V4.0.0_CE 95% Latency (ms)** | **V3.1.0_CE QPS** | **V3.1.0_CE 95% Latency (ms)** |
|---------|----------|----------|----------|----------|

3.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 的问题。



v4.1.0_CE
Version information
| **Information** | **Description** |
| --- | --- |
| Release date | 2023-04-20 |

3.1.4

- 内核能力提升:支持数据文件动态按需分配,支持直方图类型统计信息采集与监控。
- 稳定性提升:扩展单表大事务能力到2TB,多模OBKV支持历史数据过期清理。
- 易用性提升:支持删除单条缓存计划,优化日志与错误码展示等,ob-operator支持部署OBProxy,开源最新测试套框架。

特性更新
支持数据文件动态按需分配
OceanBase数据库是一款分布式磁盘数据库,在系统逻辑架构上使用宏块(Macro Block)与微块(Micro Block)对数据进行组织管理,在物理存储上则使用ssblock文件进行数据存储。当前OceanBase的ssblock文件采用预先全额分配并占用的磁盘空间管理方式,该分配方式保障了OceanBase数据库在使用过程中的磁盘资源可获取性,可避免因磁盘空间不足导致数据持久化失败,减少系统运行时的风险。同时本次版本迭代OceanBase数据库新增支持数据文件动态按需分配, 用户只需要配置其关心的一次磁盘自动分配大小datafile_next和磁盘空间自动分配上限值datafile_maxsize即可。
OceanBase数据库主要采用定时任务的方式进行磁盘空间调整,核心能力如下:

- 依据ssblock磁盘空间的初始值设定,使用定时任务后台统计与计算,当磁盘使用率达到95%(可配置)时,自动触发磁盘空间扩展。
- 在用户分配的磁盘报空间不足时,系统根据用户配置自动进行磁盘空间扩展。
- 不支持单OBServer节点数据文件空间回收,若用户希望减少并释放当前磁盘空间使用量,可通过对集群加减机器的方式(集群扩缩容)进行。

支持直方图类型统计信息采集与监控。
新增支持直方图类型统计信息采集与监控。结合Prometheus的直方图类型(Histogram)监控指标,在OceanBase数据库内部定义和生成新的统计信息表,记录99、95等分位的统计数据,通过obagent开源组件输出到Prometheus进行展示,提升产品易用性。但需要注意的是,该功能启用时会带来少量写性能损耗。
OceanBase数据库的直方图类型统计信息提供如下能力:

- 支持视图QUERY_RESPONSE_TIME,定义在INFORMATION_SCHEMA中。
- 支持系统变量query_response_time_stats, 设置统计开发启动。
- 支持系统变量query_response_time_range_base ,设置统计间隔时间。
- 支持系统变量query_response_time_flush,设置刷新统计数据且重新读取数据。
- 支持obagent组件读取该视图,在Prometheus中生成直方图。

多模数据库(OBKV)支持历史数据过期清理。
新增支持多模数据库(OBKV)支持历史数据过期清理。OceanBase数据库采用服务端维护过期数据的方式,支持基于TIMESTAMP的时间过期回收和MAXVERSION版本过期的回收,用户可在 column family 表的 comment 中设置表数据的过期时间和多版本数量,OceanBase内部采用周期性后台任务, 在Partition Service层基于分区粒度开启事务扫描并清理过期数据。核心能力如下:

- 新增租户级系统表__all_kv_ttl_task 和 __all_kv_ttl_task_history,用以记录内部周期TTL任务状态和TTL任务的历史操作记录。该历史记录表需要进行垃圾回收,以维护该表记录数的稳定,类似于其他History表的GC策略。
- 新增视图 DBA_OB_KV_TTL_TASKS 和 DBA_OB_KV_TTL_TASK_HISTORY,便于用户查看本租户下的TTL当前 TTL 任务和历史 TTL 任务。
- 新增虚拟表 __all_virtual_kv_ttl_task 和 __all_virtual_kv_ttl_task_history,以及对应的两个视图 CDB_OB_KV_TTL_TASKS 和 CDB_OB_KV_TTL_TASK_HISTORY,便于用户在系统租户下查看所有租户当前正在执行的 TTL 任务和历史 TTL 任务。
- TTL是后台运行的周期性任务,该任务会对设置TTL属性的表进行周期性的巡检和删除操作,会额外占用小部分系统的内存、CPU等资源。增加配置项kv_ttl_duty_duration用以限制TTL周期任务的后台运行时间,如果没有执行完,则内部把没有执行完的任务挂起来,后面再次进入到任务运行时间段的时候,继续上次挂起来的任务。用户可以根据业务运行特征,设置TTL后台任务的执行时间。
- 新增配置项enable_kv_ttl用于表示是否启动TTL后台任务,kv_ttl_history_recycle_interval用以描述TTL任务历史记录保留的时间段。
- 内存使用与限流,后台TTL任务根据memstore的内存使用量动态调整任务进度。
- 事务使用与限流,后台TTL任务限制每次查询和删除的表记录条数,分批次提交事务,控制大事务的产生,同时支持锁冲突回滚当前事务。

支持失效单条SQL缓存计划。
支持失效单条 SQL 的缓存计划,当 DBA 诊断出某条SQL 的执行计划不合理时,可以根据 SQL ID 做细粒度计划缓存的淘汰,避免失效整个Plan Cache影响系统性能稳定。使用方法如下:

- 系统租户通过 ALTER SYSTEM FLUSH PLAN CACHE [ [SQL_identifier] [db_list] tenant_list ][global] 语句指定失效某租户下特定或全部 SQL 的计划。
- MySQL 租户通过增加命令 ALTER SYSTEM FLUSH PLAN CACHE [ [ SQL_identifier ] [db_list] ] [global]; 失效特定或全部 SQL 的计划。



产品易用性增强
- ob-operator支持部署OBProxy,便于用户使用多节点的集群,同时提升集群路由准确度。
- OceanBase数据库因需要MySQL错误码兼容,在生产日志阶段做了内外部错误码转换,用户在客户端看到的错误码和日志中记录的错误码不一致,无法通过错误码在日志中直接检错到相关信息,给排查问题带来不少困惑。为此,OceanBase数据库在日志生成阶段,同时记录输出用户客户端看到的错误码(user_error_code)和内部错误码(internal_error_code),方便根据错误码查找定位问题。
- 针对update [table_name] set [column_name]语句,优化执行失败信息返回,在报错Data too long for column时明确对应出错的列信息。
- 开源最新版本的obclient客户端以及测试驱动框架,帮助社区开发者快速参与到代码开发和测试工作,降低入门门槛。

行为变更

- 禁止修改 lower_case_table_names变量

lower_case_table_names变量是全局只读变量,因此我们禁止通过set global lower_case_table_names和alter tenant [tenant_name] set variables lower_case_table_names语法对该变量进行修改。

- 在自动扩容开启的情况下,__all_virtual_disk_stat的total_size字段统计值是可存储磁盘空间的最大值。
问题修复

- 修复系统变量datadir的内容显示,采用集群配置项data_dir的内容,该系统变量为只读变量不支持修改。
- 修复去除大事务内部限制,取消事务组log_id生成大小的限制,同时增加配置项_max_trx_size避免生成事务过大给数据库带来负面影响。
- 修复表名称无法存储超过64个字符的问题。
- 修复查询带/*+ LEADING */ 功能时,执行是报错Invalid argument的问题。
- 修复创建表使用create table t select ~1语法报错4016的问题。
- 修复sql多行注释的问题
- 修改show full columns命令对应的虚拟表定义,完善mysql兼容性

OCP 3.3.0-CE
- [Release Note](https://mdn.alipayobjects.com/ob_portal/afts/file/A*xPhIRomZ-a8AAAAAAAAAAAAADWF2AQ)
- 支持标准部署的社区版 OBProxy 接管
- 兼容支持社区版 OBProxy 部署
- 新增备份恢复功能,支持 NFS 介质的备份与恢复。
- 容量管理, 增加以副本的⻆度查看资源的使用情况。
- 增加日志查询功能,可以直接在 OCP 上查询 OceanBase, OBProxy 和主机的日志,方便快速 定位和分析问题

OMS 3.3.0-CE
- [Release Note](https://mdn.alipayobjects.com/ob_portal/afts/file/A*8ytuQK2v3a8AAAAAAAAAAAAADWF2AQ)
- 新增支持 OceanBase-CE 至 OceanBase-CE 逻辑升级。
- 新增支持 OB_MySQL_CE -> Kafka 结构同步,全量同步,增量同步。 ⚫ 新增支持 OB_MySQL_CE ->RocetMQ 增量同步。
- 支持非唯一索引后置创建功能,全面提升全量迁移效能。
- 支持 JSON 数据类型。
- 支持 MySQL 8.0 版本。
- 去除 OceanBase-CE 数据源关联 OCP 硬限制,支持更多业务场景。

OBDeploy
- [Release Note](https://github.com/oceanbase/obdeploy/releases)
- 新增obd test tpcc命令
- 新增/usr/obd/example目录,内容与代码库example目录一致 (https://github.com/oceanbase/obdeploy/issues/123)
- mysqltest命令执行record选项,开启后将只生成结果文件,不进行对比



v3.1.3_CE_BP1
RELEASE NOTE
| **Information** | **Description** |
| ------ | ------ |
| Version | V3.1.3_CE_BP1 |
| OBServer RPM version | oceanbase-ce-3.1.3-10100032022041510 |
About this version

This version fixed some bugs.

BUGFIX
- Fix observer restart failed in some extreme environment because fetch slog again failed.( [a09d313](https://github.com/oceanbase/oceanbase/commit/a09d3134c10665f03fd56d7f8bdd413b2b771977));
- Decrease the memory limit of MINI MODE docker image.( [7a49bef](https://github.com/oceanbase/oceanbase/commit/7a49bef3a54ff430868d7499c0212692dd105a77));

发布说明
| **项目** | **描述** |
| ------ | ------ |
| 版本号 | V3.1.3_CE_BP1 |
| OBServer RPM 版本号 | oceanbase-ce-3.1.3-10100032022041510 |
发版目的

本次发版主要是BUG修复。

BUG 修复

- 修复极端场景下,ob重启回放slog失败,导致启动失败的问题( [a09d313](https://github.com/oceanbase/oceanbase/commit/a09d3134c10665f03fd56d7f8bdd413b2b771977));
- 调低MINI MODE的内存限制( [7a49bef](https://github.com/oceanbase/oceanbase/commit/7a49bef3a54ff430868d7499c0212692dd105a77));

v3.1.3_CE
RELEASE NOTE
Please refert to https://open.oceanbase.com/blog/10900260 for more Details.

| Item | Description |
| -------- | ------------------ |
| Release date | 2022-3-30 |

3.1.3

- 多模应用:新增JSON格式数据类型和OBKV HBASE 客户端,支持半结构化和NoSQL类型业务场景应用。
- 生态能力增强:支持MySQL原生的Python/Go/ODBC类型驱动连接OceanBase数据库,发布ob-operator支持K8s容器编排,支持ARM平台编译运行。
- 更优的产品能力:支持更小的资源规格(2C8GB),提升CDC链路同步可靠性。

特性更新
支持 JSON 格式数据类型
支持 DDL、索引创建、SQL 查询、数据类型转换等基本操作,兼容MySQL 5.7 版本的全量以及 8.0 版本的部分 JSON 函数。
- 支持四种基本类型(字符串、数字、布尔值和 NULL)和两种结构化类型(对象和数组)。
- 支持在创建表、添加列时创建类型为 JSON 的列。
- 支持基于 JSON 列的生成列创建索引。
- 支持通过 ->、->> 操作符引用 JSON 对象。
- 支持在 SELECT/INSERT/UPDATE/DELETE 等 SQL 语句中使用 JSON 文本。
- 支持MySQL 5.7 版本的全量 JSON 函数以及 JSON_OVERLAPS()、JSON_VALUE() 等 8.0 版本新增函数。

开源 OBKV HBASE 客户端
应用可以通过该客户端获得HBASE语法兼容(HBASE 0.94版本)的API接口,与OceanBase数据库通过TABLE API 接口协议进行通信。在数据模型上增加宽表模型(WideColumn),优化 Filter 逻辑,支持 KEY 分区、RANGE 分区和前缀分区。

兼容MySQL原生驱动
支持更多MySQL生态原生驱动连接OceanBase数据库:
- 新增支持Python3 pyMySQL和Python2 MySQL-python驱动。
- 新增支持golang Go-SQL-Driver/MySQL驱动。
- 新增支持Unix ODBC驱动。

发布ob-operator,支持K8s容器编排
通过使用 ob-operator,OceanBase 数据库可以以容器的形式运行在公有云或私有化部署的 Kubernetes 集群上。用户通过 YAML或Kustomize 部署 ob-operator,ob-operator 以服务的形式提供如下能力:
- 在 K8s 环境下独立部署 OceanBase 集群。
- 支持集群的创建、删除、扩容、缩容和生命周期管理。
- 支持Zone的创建、删除。
- 支持OBServer实例的创建、删除、重启、故障转移。
- 支持使用 kubectl 命令查看集群、Zone和OBServer 的状态。
- 支持通过 HTTP API 管理 K8s 资源。

新增支持 ARM 平台
完成OceanBase 数据库与OBProxy中间件在ARM架构平台下的适配验证,并发布基于ARM架构的版本,社区用户可以在ARM平台下进行业务开发、编译测试和应用部署。

支持更小规格
发布2C8GB资源规格的Docker镜像,方便社区开发者使用更小的资源学习和使用OceanBase数据库,降低入门成本。

CDC数据同步可靠性增强
CDC 从 OceanBase 数据库拉取的数据以内存态的形式提供给下游消费者,对机器资源配置规格有较高要求,对于用户的关键业务场景(例如大数据量入库场景),可能会造成数据同步失败。因此,我们对CDC链路的数据同步能力进行增强:
- 支持持久化模式,数据在同步开始前先进行本地临时存储,然后再通过CDC链路同步给下游消费者,待消费完毕后清理本地临时存储的事务数据,减少数据同步过程中对内存的占用。
- 支持大事务,优化大事务同步时对内存的使用,结合持久化模式,满足大事务场景下的数据同步需求。

产品易用性增强
- 资源容量(存储、内存)相关配置项支持小数设置,例如:alter system set datafile_size ='11.5G'。
- OBD 在报错时提供帮助链接地址。
- ob_admin支持在Clog解析时过滤用户数据。
- information_schema.TABLES 增加 ENGINE 值。
- 文档开源,支持通过github提交文档issue和pr。文档包括架构设计原理、性能调优、故障处理、日常维护指导等。

行为变更
- 分区表默认创建的索引变更为本地索引
在一些客户使用过程中我们发现 ,需要经常对分区表的索引性能进行调优,经过分析总结,发现局部索引更适合多数客户业务场景,因此我们将分区表默认创建的索引调整为本地索引。如果需要创建全局索引,可以参考示例 create table ad1(c1 int primary key, c2 int, index(c2) global)partition by key(c1) partitions 2。
- 修改创建表的默认行为为非严格模式
OceanBase 数据库建表时只要求多数派副本创建成功即认为建表成功。如果需要使用严格模式创建表,需要将系统变量ob_create_table_strict_mode设置为True。

问题修复:
- FLASHBACK TABLE 功能修复,删除的表会临时存放在数据库的回收站中,用户可以通过 FLASHBACK TABLE命令恢复表和数据。
- 修复TIMESTAMP值域变更导致的显示错误问题,例如:列类型由TIMESTAMP(0)修改为TIMESTAMP(6),保证前后查询时间结果显示一致。
- 修复ALTER SYSTEM SET DATAFILE_SIZE命令执行报错,若将数据文件大小变更缩小直接报错返回。
- 修复因事务状态表非空导致增量备份失败的缺陷。

v3.1.2_CE
RELEASE NOTE

Version information

| Item | Description |
| -------- | ------------------ |
| Release date | 2021-12-30 |

Page 15 of 30

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.