Releases: oceanbase/oceanbase
v4.2.1_CE_BP3_HF1
Version information
Information | Description |
---|---|
Release date | January 25, 2024 |
Version | V4.2.1_CE_BP3_HF1 |
Commit number | 37a4c62 |
OBServer RPM version | oceanbase-ce-4.2.1.3-103010052024011916 |
Bug fixes
- Fixed the issue where calling the
DBMS_MONITOR
package with decimal type data would result in anIncorrect arguments to control info
error. - Fixed the issue where time-to-live (TTL) tasks in OBKV failed when the table contains
LONGTEXT
columns. - Fixed the issue where the
insertOrUpdate
operation on the OBKV client failed to write data when an auto-increment column of the table was used as the primary key and secondary indexes existed. - Fixed the issue where a core dump occurred on an OBServer node due to the lack of null pointer check when the OBServer node processed the driver code of Alibaba Cloud Object Storage Service (OSS).
- Fixed the issue where the paging query performance was low due to an inappropriate execution plan in a scenario where the
ORDER BY
andLIMIT
clauses were used. - Fixed the issue where the major compaction for the standby tenant could be stuck when a backup task and a medium-priority compaction task were concurrently executed.
- Fixed the issue where the query performance was downgraded when a large number of SSTables were involved in major compactions during a transfer operation.
版本信息
项目 | 描述 |
---|---|
发布日期 | 2024-1-25 |
版本号 | V4.2.1_CE_BP3_HF1 |
Commit 号 | 37a4c62 |
OBServer RPM 版本号 | oceanbase-ce-4.2.1.3-103010052024011916 |
缺陷修复
- 修复调用
DBMS_MONITOR
包传入小数类型数据报错Incorrect arguments to control info
的问题。 - 修复表中包含 LONGTEXT 列时,OBKV 的 TTL 任务执行失败的问题。
- 修复当表中自增列作为主键且存在二级索引时,使用 OBKV 客户端的
insertOrUpdate
接口写入失败的问题。 - 修复 OBServer 内部在处理 OSS 驱动代码时,缺少的空指针判断,导致的 OBServer Core 的问题。
- 修复
order by + limit
分页场景下,由于执行计划不优导致查询性能慢的问题。 - 修复备份和 medium compaction 并发时,可能导致备租户合并卡住问题。
- 修复 Transfer 期间转储 SSTable 个数比较多时,查询性能下降的问题。
v4.2.2_CE
Version information
Information | Description |
---|---|
Release date | January 17, 2024 |
Version | V4.2.2_CE |
Commit number | fac02c6 |
OBServer RPM version | oceanbase-ce-4.2.2.0-100000192024011915 |
Overview
OceanBase Database V4.2.2_CE is a follow-up to V4.2.1_CE. This version comes with enhancements to the database kernel, with a restructuring of the row-based cost estimation system and statistics collection mechanism. It also introduced support for lateral derived tables, order preservation for paging queries, and DBLink-based remote UDF calls to enhance MySQL compatibility. Additionally, OceanBase Database V4.2.2_CE now supports GIS, XML, and JSON data types to expand the multi-mode feature. This version also added support for SQLSTAT, TIME MODEL, and manual partition transfer to improve the ease of use. Furthermore, it optimized system resource usage by reducing temporary index space occupation and supporting OBKV RPC compression. OceanBase Database V4.2.2_CE also improved the performance of minimum specification databases and enhanced system stability.
Key features
Kernel enhancements
-
Enhancement of the row-based cost estimation system
As OceanBase Database evolves, more cost estimation methods are supported for optimizers. Currently, OceanBase Database supports a variety of algorithms for row-based cost estimation by each operator, such as storage-layer cost estimation, statistical estimation, dynamic sampling, and default statistics. In OceanBase Database V4.2.2_CE, the row-based cost estimation system was restructured, prioritizing cost estimation strategies based on specific use cases and introducing tools like hints and system variables for manual intervention in strategy selection. Additionally, the new version further enhanced the framework for calculating predicate selectivity and number of distinct values (NDV), thereby improving the accuracy of optimizers' cost estimation.
-
Enhancement of the statistics feature
On the basis of V4.2.1_CE, V4.2.2_CE further improved the statistics feature in terms of statistics collection performance, compatibility, and ease of use. Specifically, this version restructured the offline statistics collection process, improved the statistics collection efficiency, and optimized the statistics collection strategy. The system now automatically collects index histograms by default, derives statistics to ensure transactional consistency during online statistical gathering, and is compatible with the
ANALYZE TABLE
feature of MySQL to support more syntaxes. This version now provides a command to cancel statistical collection, supports progress monitoring for statistics gathering, and improves operational usability. It also provides the capability for parallel deletion of statistical data. -
Optimization of large IN queries
Currently, in scenarios where the right side of the IN predicate contains many constants (referred to as "large IN query"), there is a noticeable consumption of CPU and memory during the hard parsing stage. To address these large IN queries, V4.2.2_CE implemented a new query range extraction algorithm. Moreover, when the number of values in the IN list exceeds 1000, OceanBase Database triggers a rewrite from the IN list to the VALUES table to reduce resource consumption and improve performance.
-
Enhancement of the execution engine
OceanBase Database V4.2.2_CE implemented a series of optimizations at the SQL execution layer, such as enhancements to recursive CTE searches, the integration of window functions with automatic memory management, improvements to
adaptive hash group by
for data skew optimization, the refinement ofhash-based distinct aggregate
strategy, and optimizations for theadaptive hash group by
strategy. These enhancements help to boost the performance of SQL execution and increase system stability. -
Optimization of the recompilation logic in PL cache
After a stored procedure is compiled as a shared library, it can be used by multiple threads. However, if the dependent objects are changed, the shared library may become invalid and must be recompiled. OceanBase Database V4.2.2_CE reviewed and refined the recompilation scenarios. It implemented a series of logic optimizations in terms of temporary table matching, dependency information collection for static SQL statements, and DDL operations on tables, to avoid recompilation when cached objects in the PL cache become invalid.
-
Persistence of PL compilation results
In previous versions, the compiled PL functions and procedures were retained in the PL cache, which risked eviction under tight memory conditions. This meant that the compilation results could be lost after a system restart and a recompilation was required in distributed environments. Consequently, PL statements missing the cache would initiate an low-level virtual machine (LLVM) compilation, incurring CPU usage. However, starting from OceanBase Database V4.2.2_CE, the compiled PL functions and procedures are now persistently stored in system tables. As long as no DDL operations invalidate the cache, these functions and procedures require compilation only once and can be reused after a restart or in a distributed environment.
-
Embedding of session variables for function indexes
When a function index is created, a hidden virtual generated column is added to the primary table, defined as the index key of the function index, and then the values of this column are stored in the index table. The session variables can influence the output of some built-in system functions, resulting in different outcomes despite identical input parameters. To enhance the reliability of generated columns and function indexes, the latest release ensures that any session variables the function depends on are embedded directly into the index or generated column's schema. Consequently, when calculating values for these columns, the system employs these embedded, unchanging values, thereby rendering the current session's variable values irrelevant. In OceanBase Database V4.2.2_CE, system variables that can be embedded include
timezone_info
,nls_format
,nls_collation
, andsql_mode
. -
OBCDC allowlists and blocklists
OceanBase Change Data Capture (CDC) already supports tenant-level log synchronization. Starting from OceanBase Database V4.2.2_CE, database-level and table-level log synchronization are supported. The system now supports the configuration of allowlists and blocklists using simple regular expressions to accommodate scenarios where users require data synchronization for only a subset of tables.
Compatibility with MySQL
-
Lateral derived tables
Lateral derived tables are a special type of derived tables that can reference columns from preceding tables within the same
FROM
clause. This makes SQL statements easier to read and write, and reduces repeated data scanning and calculation, thereby improving the performance of SQL execution. -
Order preservation for paging queries
Due to factors such as plan selection and parallel execution, the output results of the
LIMIT OFFSET
clause are unstable for most databases. To ensure a stable and ordered output, it is necessary to add anORDER BY
clause to the outer layer of each SQL statement. Although native MySQL Database does not guarantee an ordered result set, many of its queries still produce ordered results. To avoid extensive restructuring for paging queries during data migration from a MySQL database, OceanBase Database has introduced a feature that preserves order in paging queries. However, there may be some performance degradation compared with the unordered behavior, particularly with large data volumes. For business scenarios that require order preservation, you can consult OceanBase Technical Support to assess the impact on performance. If the impact is acceptable, enable this feature by using a parameter. -
Online DDL operations for integer type expansion
In the context of a primary key column, partitioning key column, index column, column referenced by a generated column, or a column with a
CHECK
constraint, there may be a need to change its integer type to accommodate a larger value range, such as fromINT
toBIGINT
. In OceanBase Database V4.2.1_CE, this type of change was performed using an offline DDL operation with doublewrites, resulting in table locks that blocked read and write access. However, starting from V4.2.2_CE, this change is implemented using an online DDL operation without affecting business writes. -
Local import from the client
Prior to V4.2.2_CE, OceanBase Database supported file import from the server, Network File System (NFS), and Object Storage Service (OSS) through SQL import in either standard or bypass mode. However, importing files from the client side required the use of tools like OBLOADER and could not be done directly using SQL statements. To facilitate data developers in performing local import tests and to address the issue of inconvenient data import due to the inability to log on to the server in cloud environments, V4.2.2_CE added new support for client-side local data import (
LOAD DATA LOCAL INFILE
). This feature allows for local file import through streaming file processing. -
Support for output parameters in prepared statements
In OceanBase Database V4.2.2_CE, executing the
CALL PROCEDURE
statement via the prepared statement (PS) protocol in MySQL mode now supports stored procedures with output parameters. -
Improvement in communication protocol
OceanBase Database V4.2.2_CE now supports the MySQL communication protocol command
COM_SET_OPTION
for specifying connection-level options such asMYSQL_OPTION_MULTI_STATEMENTS_ON
and `MY...
v4.2.1_CE_BP3
Version information
Information | Description |
---|---|
Release date | January 2, 2024 |
Version | V4.2.1_CE_BP3 |
Commit number | 8fe69c2 |
OBServer RPM version | oceanbase-ce-4.2.1.3-103000032023122818 |
Enhanced features
-
Data compression at the communication protocol layer is supported for OBServer nodes and OceanBase Database Proxy (ODP) to reduce the bandwidth costs in data transmission.
-
Global indexes are supported in OBKV.
-
The
INSERT ... ON DUPLICATE KEY UPDATE
statement is supported. -
The
max_partition_num
parameter is added to control the maximum number of partitions that can be created or modified in the MySQL mode. -
Statistics information can be copied by using
DBMS_STATS.copy_table_stats
. -
Permission-based filtering is implemented in the result set of the
information_schema.SCHEMATA
table, allowing users to query only schemas for which they have permissions. -
The data synchronization performance is improved for the primary/standby architecture in direct connection mode.
-
The system load is reduced in scenarios where SQL statements are throttled using
max_concurrent
. -
The
DATA_PROGRESS
column is added to theCDB_OB_BACKUP_TASKS
view to show the data backup progress.
Bug fixes and improvements
Considerations
Starting from V4.2.1_CE_BP2_HF1, batch rescan is disabled by default for the NESTED-LOOP JOIN (NLJ) and SUBPLAN FILTER (SPF) operators during cluster creation. However, for clusters upgrading from earlier versions, batch rescan is enabled by default. If stability issues are found in batch rescan for the NLJ or SPF operator in an environment with large amounts data, you can disable batch rescan for the operator in the entire cluster by executing the SET GLOBAL _nlj_batching_enabled = false;
statement. If the performance is not as expected after batch rescan is disabled, you can evaluate whether to enable batch rescan again based on the actual situation.
版本信息
项目 | 描述 |
---|---|
发布日期 | 2024-01-02 |
版本号 | V4.2.1_CE_BP3 |
Commit 号 | 8fe69c2 |
OBServer RPM 版本号 | oceanbase-ce-4.2.1.3-103000032023122818 |
特性增强
- 支持 OBServer 与 obproxy 通信协议层的压缩功能,降低数据传输带宽成本。
- OBKV 支持全局索引的能力。
- 支持
INSERT ... ON DUPLICATE KEY UPDATE
语法。 - 新增配置项
max_partition_num
用于控制 MySQL 模式下允许创建或者更改的最大分区数。 - 支持通过
DBMS_STATS.copy_table_stats
拷贝统计信息。 - 对
information_schema.schemata
表的结果集增加权限过滤,用户只能查询权限范围内的 Schema。 - 优化网络直连主备库架构下的数据同步性能。
- 优化通过
max_concurrent
对 SQL 进行限流场景下系统的负载。 CDB_OB_BACKUP_TASKS
视图新增DATA_PROGRESS
字段,用于展示数据备份进度。
缺陷修复
- 修复
JSON_UNQUOTE
类型推导时没有设置 Length,导致SHOW CREATE TABLE
报错 4016 的问题。 - 修复 Json 或 Lob 类型数据的列数据超过 2M 时,LOAD DATA 导入报错的问题。
- 修复在 Visual Studio for Windows 下,使用
.NET
驱动连接 OBServer 异常的问题。 - 修复使用
ST_Contains
函数时,通过空间索引查询数据异常的问题。 - 修复
character_set_results
设置为空的场景下,SHOW CREATE TABLE
报错CHARSET_INVALID
的问题。 - 修复输入参数为 Lob 类型时,
REPLACE
系统函数没有正确处理,导致执行时报错的问题。 - 修复租户数量过多时,可能导致 OBServer 启动时报错 4013 内存不足的问题。
- 修复 SQL 并发执行时,当执行计划中
SUBPLAN FILTER
右侧是 Hash Join,且 Hash Join 处理数据量比较小时,可能触发业务请求变慢, 租户 CPU 升高的问题。 - 修复 PDML 场景下,短时间内大量日志写入可能导致语句超时的问题。
- 修复小规格场景下,EncodePivot 模块内存膨胀导致租户内存爆的问题。
- 修复 Transfer 过程中,多表 Join 查询时,SqlExecutor 模块内存膨胀导致租户内存爆满的问题。
- 修复使用
INSERT INTO SELECT
语句进行旁路导入数据时,报错 4038 的问题。 - 修复 OBKV insertup 接口性能问题,支持通过设置
binlog_row_image
为 MINIMAL 优化 insertup 接口性能。 - 修复大量租户环境下,后台线程占用 CPU 过高,导致集群连接异常的问题。
注意事项
从 V4.2.1_CE_BP2_HF1 版本开始,新建集群时,Nested Loop join(NLJ)和 SUBPLAN FILTER(SPF)算子的 BATCH RESCAN 优化默认会被关闭。然而,对于从老版本升级上来的集群,它们会默认保持原来的 BATCH RESCAN 打开的状态。对于存量的环境,如果发现 NLJ/SPF BATCH RESCAN 的稳定性问题,可以通过执行 SET GLOBAL _nlj_batching_enabled = false;
命令来关闭该优化,这将在整个集群范围内禁用 NLJ/SPF 的 BATCH RESCAN 优化。如果在关闭优化后性能不符合预期,可以根据具体情况重新评估并选择是否重新开启。
v4.2.1_CE_BP2_HF1
Version information
Information | Description |
---|---|
Release date | December 18, 2023 |
Version | V4.2.1_CE_BP2_HF1 |
Commit number | f675233 |
OBServer RPM version | oceanbase-ce-4.2.1.2-102010022023121415 |
Overview
-
This version addressed several customer and internal testing issues to enhance product stability.
-
Starting from V4.2.1_CE_BP2_HF1, batch rescan is disabled by default for the NESTED-LOOP JOIN (NLJ) and SUBPLAN FILTER (SPF) operators during cluster creation. However, for clusters upgraded from earlier versions to this version, batch rescan is enabled by default. If stability issues are found in batch rescan for the NLJ or SPF operator in an environment with large amounts data, you can disable batch rescan for the operator in the entire cluster by executing the
SET GLOBAL _nlj_batching_enabled = false;
statement. If the performance is not as expected after batch rescan is disabled, you can evaluate whether to enable batch rescan again based on the actual situation.
Bug fixes
版本信息
项目 | 描述 |
---|---|
发布日期 | 2023-12-18 |
版本号 | V4.2.1_CE_BP2_HF1 |
Commit 号 | f675233 |
OBServer RPM 版本号 | oceanbase-ce-4.2.1.2-102010022023121415 |
发版目的
-
解决客户及内部测试遇到的问题,提升版本稳定性。
-
从V4.2.1_CE_BP2_HF1 版本开始,新建集群时,Nested Loop join(NLJ)和 SUBPLAN FILTER(SPF)算子的 BATCH RESCAN 优化默认会被关闭。然而,对于从老版本升级上来的集群,它们会默认保持原来的 BATCH RESCAN 打开的状态。对于存量的环境,如果发现 NLJ/SPF BATCH RESCAN 的稳定性问题,可以通过执行
SET GLOBAL _nlj_batching_enabled = false;
命令来关闭该优化,这将在整个集群范围内禁用 NLJ/SPF 的 BATCH RESCAN 优化。如果在关闭优化后性能不符合预期,可以根据具体情况重新评估并选择是否重新开启。
缺陷修复
v4.2.1_CE_BP2
Version information
Information | Description |
---|---|
Release date | December 7, 2023 |
Version | V4.2.1_CE_BP2 |
Commit number | ccdde7d3 |
OBServer RPM version | oceanbase-ce-4.2.1.2-102000042023120514 |
Enhanced features
- The MySQL mode of OceanBase Database now supports paging queries while maintaining the same sorting method for each query.
- A new command
TRANSFER PARTITION
is provided to manually adjust the distribution of partitions. With this command, you can migrate specific partitions to specific log streams to aggregate or scatter partitions. - OBKV now supports data compression for remote procedure calls (RPCs), reducing network bandwidth usage and user costs.
- This version now allows you to set a threshold for switching the storage method of LOB data from INROW (stored in the primary table by using row storage) to OUTROW (stored in a separate LOB auxiliary table). This enhancement aims to improve the performance of LOB data queries.
Product behavioral changes
-
The
backup_data_file_size
parameter, which is related to backup and restore, is changed from a cluster-level parameter to a tenant-level parameter. -
The
tableapi_transport_compress_func
parameter, which is related to TableAPI, is renamed askv_transport_compress_func
. -
A new parameter
kv_transport_compress_threshold
is introduced to specify the minimum threshold for compressing OBKV query result sets. -
The value range for adaptive adjustment of the
server_cpu_quota_min
andserver_cpu_quota_max
parameters is increased to meet requirements of larger specifications.cpu_count (0C, 8C) [8C, 16C) [16C, 32C) [32C, +∞) server_cpu_quota_min 1C 2C 3C 4C server_cpu_quota_max 1C 2C 3C 4C
Bug fixes
- Fixed the issue where the disk bandwidth was used up during a major compaction after a large amount of data was deleted. This issue occurred because, for each deleted data row, a macroblock was opened to verify whether the data row exists in the macroblock.
- Fixed the issue where a core dump occurred on an OBServer node due to a concurrency error in an earlier version of the OpenSSL library during concurrent calls to encryption functions.
- Fixed the issue where, during the execution of a transfer task, errors were encountered and LOB data writes were repeatedly retried due to the failure to refresh the location cache.
- Fixed the issue where, during the concurrent creation of indexes on tables with many partitions, the concurrent execution of INNER SQL statements internally could result in a livelock, causing the task to be unable to progress.
- Fixed the issue where the period of time consumed in executing UPDATE operations on tables containing LOB data was long.
- Fixed the issue where excessive disk space was occupied due to the retention of data snapshots during bypass imports of tables containing LOB data.
- Fixed the issue where modifying the auto-increment column attribute in a table schema and performing a Truncate operation would result in Error 4016 due to the incorrect updates in internal tables.
- Fixed the issue where data of multiple versions may exist when expired data was deleted based on
MaxVersions
in the HBase mode of OBKV. - Fixed the issue of memory leaks within the
SysJobMgr
module that caused Error 4013 due to memory exhaustion in the sys500 tenant during the execution of table-level restore tasks. - Fixed the issue where the units remained in the WAIT GC state for a long period of time and failed to release after deleting a tenant.
- Fixed the issue where, even after setting IOPS for resource isolation, the number of I/O operations would still exceed the limits in some scenarios.
- Fixed the issue where a long period of time was consumed in a major compaction that involved millions of tablets.
- Optimized the log synchronization and physical restore performance.
- Optimized the performance of spatial index queries by reducing the number of table access operations and minimizing the performance overhead in spatial relationship calculations.
Considerations
-
Before V4.2.1_CE_BP2, there was a problem with the limitation of PX threads, potentially resulting in high CPU load on OBServer nodes. However, this issue has been resolved in V4.2.1_CE_BP2, and an upgrade is recommended.
-
In the current version, there are some instability issues when using the
INSERT INTO SELECT
statement for bypass import, particularly when triggering a data transfer. Therefore, it is not recommended to use theINSERT INTO SELECT
statement for bypass import.
版本信息
项目 | 描述 |
---|---|
发布日期 | 2023-12-07 |
版本号 | V4.2.1_CE_BP2 |
Commit 号 | ccdde7d3 |
OBServer RPM 版本号 | oceanbase-ce-4.2.1.2-102000042023120514 |
特性增强
- MySQL Mode 支持分页查询保序。
- 新增
TRANSFER PARTITION
命令用于手动调整分区分布的能力。通过该命令,用户可以选择将特定的分区迁移到特定的日志流上,从而实现不同分区的聚合或打散分布。 - OBKV 支持 RPC 数据压缩,减小网络带宽占用,降低用户成本。
- 支持设置 LOB 数据存储方式由 INROW (和主表行存储在一起)转换为 OUTROW(将 LOB 数据存储在 LOB 辅助表中)的阈值,优化了大对象场景下的性能。
产品行为变更
-
备份恢复相关配置项
backup_data_file_size
由集群级调整为租户级。 -
tableAPI 相关配置项
tableapi_transport_compress_func
更名为kv_transport_compress_func
。 -
新增配置项
kv_transport_compress_threshold
用于指定需要进行压缩的 OBKV 查询结果集大小的最小阈值。 -
配置项
server_cpu_quota_min
和server_cpu_quota_max
增大自适应变更的范围,以满足更大规格的需求。cpu_count (0c, 8c) [8c, 16c) [16c, 32c) [32c, +∞) server_cpu_quota_min 1c 2c 3c 4c server_cpu_quota_max 1c 2c 3c 4c
缺陷修复
- 修复在大量删除数据后做合并操作时,由于每行删除的数据都会打开对应宏块,判断是否存在于宏块中,导致磁盘带宽打爆的问题。
- 修复并发调用加密函数时,由于低版本 OpenSSL 库存在并发问题,可能导致 OBServer Core 的问题。
- 修复 Transfer 任务执行期间,在写入LOB 数据场景下,由于 Location Cache 没有刷新,导致写入一直重试并报错的问题。
- 修复对分区数较多的表大量并发建索引时,内部发起的 INNER SQL 并发执行可能形成活锁,导致无法推进任务的问题。
- 修复对包含 LOB 类型数据的表执行 Update 操作耗时高的问题。
- 修复旁路导入包含 LOB 数据时,保留了数据快照,导致磁盘空间占用过多的问题。
- 修复表结构进行自增列属性变更且执行 Truncate 操作后,由于内部表没有正确更新,可能导致表操作报错 4016 的问题。
- 修复 OBKV HBase 模式基于
MaxVersions
进行过期删除时,可能存在多版本数据的问题。 - 修复执行表级恢复任务时,
SysJobMgr
模块内存泄漏导致 500 租户内存耗尽报错 4013 的问题。 - 修复删除租户后,Unit 长时间不释放,状态卡在 WAIT GC 的问题。
- 修复设置 IOPS 资源隔离后,部分场景下 IO 仍会超出限制的问题。
- 优化百万 Tablet 场景下,合并耗时高的问题。
- 优化日志同步以及物理恢复性能。
- 优化空间索引查询性能,减少回表次数并降低空间关系计算的性能开销。
注意事项
- V4.2.1_CE_BP2 之前版本,存在 PX 线程限制失效问题,可能会导致 OBServer 的 CPU 负载过高,该问题在 V4.2.1_CE_BP2 已修复,并推荐进行升级。
- 当前版本使用
INSERT INTO SELECT
语句旁路导入数据时,如果触发 Transfer,会存在一些不稳定的问题,因此不推荐通过此方法进行旁路导入。
v4.2.1_CE_BP1_HF1
Version information
Information | Description |
---|---|
Release date | November 13, 2023 |
Version | V4.2.1_CE_BP1_HF1 |
Commit number | 2f6924c |
OBServer RPM version | oceanbase-ce-4.2.1.1-101010012023111012 |
Overview
This version addressed several customer and internal testing issues to enhance product stability.
Bug fixes and improvements
-
Fixed the issue where a TTL task occupied too much memory when the OBKV was scanning expired data.
-
Fixed the issue where excessive logs were printed when there was a change in tenant roles.
版本信息
项目 | 描述 |
---|---|
发布日期 | 2023-11-13 |
版本号 | V4.2.1_CE_BP1_HF1 |
Commit 号 | 2f6924c |
OBServer RPM 版本号 | oceanbase-ce-4.2.1.1-101010012023111012 |
发版目的
解决客户及内部测试遇到的问题,提升版本稳定性。
缺陷修复
v4.2.1_CE_BP1
Version information
Information | Description |
---|---|
Release date | November 1, 2023 |
Version | V4.2.1_CE_BP1 |
Commit number | 7cb0fb4 |
OBServer RPM version | oceanbase-ce-4.2.1.1-101000062023110109 |
Overview
-
This version improved the compatibility of user-defined variables with MySQL Database.
-
This version added two views
GV$OB_KV_CONNECTIONS
andV$OB_KV_CONNECTIONS
to query all active connections of the current tenant in an OBKV database. -
The maximum length of the system variable
ob_tcp_invited_nodes
was changed to 64 KB. -
The default value of the
ls_gc_delay_time
parameter was changed to0
. -
This version addressed several customer and internal testing issues to enhance product stability.
Bug fixes
- Fixed the issue where Error 5150 was constantly reported because the tablet location cache of the auto-increment column was not refreshed after the number of units was adjusted for scaling.
- Fixed the issue in V4.x_CE where a 50 ms timeout limit was set when obtaining GTS snapshot versions, causing failure to successfully obtain Global Timestamp Service (GTS) snapshot versions in high-latency networks and continuous error
OB_GTS_NOT_READY
. - Fixed the issue where using the HBaseAPI of the OBKV client for batch PUT operations could potentially cause OBServer node crashes.
- Fixed the issue where performing InsertOrUpdate operations on the OBKV client with a column specified as the time-to-live (TTL) column using
CURRENT_TIMESTAMP
could cause OBServer node crashes. - Fixed the issue where a core dump might be triggered when the SUBPLAN FILTER (SPF) operator is used for batch rescan. A parameter was added to disable this feature by default.
- Fixed the issue where SQL statements in user-defined functions (UDFs) failed to hit the plan cache when
tx_read_only
is set toTrue
. - Fixed the issue where Error 4002 was reported in PS mode when the default value NULL of a complex data type is used as an input parameter of a stored procedure.
- Fixed the issue where some parallel DML (PDML) features might not take effect in multi-table joins.
- Fixed the issue where memory leak ocurred in the TenantTTLMgr module after TTL tasks were executed in the HBase storage model.
- Fixed the potential issue of data and load imbalance after importing data into non-partitioned tables during parallel table creation.
版本信息
项目 | 描述 |
---|---|
发布日期 | 2023-11-01 |
版本号 | V4.2.1_CE_BP1 |
Commit 号 | 7cb0fb4 |
OBServer RPM 版本号 | oceanbase-ce-4.2.1.1-101000062023110109 |
发版目的
- 提升用户自定义变量与 MySQL 数据库的兼容性。
- OBKV 新增视图
GV$OB_KV_CONNECTIONS
、V$OB_KV_CONNECTIONS
用于查看本租户所有的 KV 活跃连接。 - 系统变量
ob_tcp_invited_nodes
长度限制调整为 64K。 - 配置项
ls_gc_delay_time
默认值调整为 0。 - 解决客户及内部测试遇到的问题,提升版本稳定性。
缺陷修复
- 修复调整 Unit Number 进行扩缩容后,自增列的 Tablet location cache 没有刷新,导致持续报错 5150 的问题。
- 修复 4.x_CE 版本在获取 GTS 快照版本时设置了 50ms 的超时限制,导致在高延迟网络下无法成功获取 GTS 快照版本,查询持续报错
OB_GTS_NOT_READY
的问题。 - 修复使用 OBKV 客户端的 HBaseAPI 进行批量 PUT 操作时,可能导致节点宕机的问题。
- 修复 OBKV 指定带
CURRENT_TIMESTAMP
的列作为 TTL 过期列时,使用 OBKV 客户端执行 InsertOrUpdate 操作导致节点宕机的问题。 - 修复 SPF 算子进行 Batch Rescan 场景下可能触发的 Core 问题,新增开关默认关闭该功能。
- 修复
tx_read_only
设置为 True 的情况下,UDF 内部 SQL 无法命中 Plan Cache 的问题。 - 修复 PS 模式下,复杂类型作为存储过程入参且默认值为 NULL 时,使用默认值报错 4002 的问题。
- 修复多表关联场景下,部分 PDML 功能可能不生效的问题。
- 修复 Hbase 存储模型执行 TTL 任务后,TenantTTLMgr 模块内存泄漏问题。
- 修复非分区表并行建表导入数据后,可能存在数据和负载不均衡的问题。
v4.1.0_CE_BP4_HF1
Version information
Information | Description |
---|---|
Release date | October 8, 2023 |
Version | V4.1.0_CE_BP4_HF1 |
Commit number | c8a22da |
OBServer RPM version | oceanbase-ce-4.1.0.2-104010012023100710 |
Overview
This version addressed several customer and internal testing issues to enhance product stability.
Bug fixes
版本信息
项目 | 描述 |
---|---|
发布日期 | 2023-10-08 |
版本号 | V4.1.0_CE_BP4_HF1 |
Commit 号 | c8a22da |
OBServer RPM 版本号 | oceanbase-ce-4.1.0.2-104010012023100710 |
发版目的
解决客户及内部测试遇到的问题,提升版本稳定性。
缺陷修复
修复在升级期间(不同版本同时运行),对分区表并行执行 JOIN 操作的场景下,当查询计划中包含 EXCHANGE OUT DISTR (PKEY)
时,查询结果可能不正确的问题。
v4.2.1_CE
Version information
Information | Description |
---|---|
Release date | October 13, 2023 |
Version | V4.2.1_CE |
Commit number | 7b0f436 |
OBServer RPM version | oceanbase-ce-4.2.1.0-100000102023092807 |
Overview
OceanBase Database V4.2.1_CE is the first Long-Term Support (LTS) version of the V4.2.x_CE series. This version comes with a range of MySQL-compatible features, such as the VALUES
statement and JSON_TABLE
expression. It also introduced the Workload Repository (WR)-based data collection framework and enhanced end-to-end diagnostic capabilities for commercialization. In addition, this version optimized system resource utilization and supports table-level restore and Tencent Cloud Object Storage (COS). This version is recommended in production environments for regular business operations.
Key features
Compatibility with MySQL
-
VALUES
statementThe
VALUES
statement was introduced in MySQL 8.0.19. It can be used to quickly construct a table of data or as a standalone DML statement with support forORDER BY
andLimit
clauses. It can also be used as a special table in regular DML statements. OceanBase Database V4.2.1_CE is compatible with MySQL Database and supports theVALUES
statement, making table value construction more convenient and easy to use. -
RENAME COLUMN
The
RENAME COLUMN
syntax was supported since MySQL 8.0. It allows users to rename columns without changing their definitions, which is more lightweight than theCHANGE COLUMN
syntax. OceanBase Database is compatible with theRENAME COLUMN
syntax of MySQL 8.0 since V4.2.1_CE.
OBKV features
-
JSON_TABLE
expressionJSON is a semi-structured data format where users can extract specific values from the JSON strings based on a path. The
JSON_TABLE
expression allows users to convert semi-structured data into structured data. The earlier versions of OceanBase Database already supported the JSON data type, but theJSON_TABLE
expression was not implemented under the MySQL mode. To meet the needs of users who want to convert JSON data into structured data for computations, V4.2.1_CE also supports this expression under the MySQL mode. -
OBKV TTL
Time-to-live (TTL) is a commonly used feature in NoSQL databases, designed to automatically expire data. For example, in businesses that deal with historical data, there is a need to periodically scan the data, determine its expiration time, and delete it accordingly. Many businesses currently rely on the TableAPI of OBKV. To simplify the management of periodic data, OceanBase Database provided the OBKV TTL capability since V4.2.1_CE. Users can define TTL attributes at the table or row level using the
CREATE TABLE
statement so that expired data is not processed during read and write operations in OBKV.
Performance improvements
-
Concurrent execution of
CREATE TABLE
In the earlier versions of OceanBase Database, DDL requests were executed serially in RootService queues. Starting from OceanBase Database V4.1.0_CE, the concurrent DDL capability was introduced, with support for concurrent execution of
TRUNCATE TABLE
. To address the performance issues related to migrating millions of table structures, V4.2.1_CE now supports concurrent execution ofCREATE TABLE
, providing a performance improvement of tenfold or even more compared with serial execution. -
Improved foreign key check performance
Prior to OceanBase Database V4.2.1_CE, foreign key checks were implemented using nested SQL statements, incurring significant overhead. From V4.2.1_CE, foreign key checks are performed using Database Autonomy Service (DAS) tasks, and batch checks in single-table DML operations is supported. Additionally, with the check result caching strategy, noticeable performance improvements have been achieved in
INSERT
andUPDATE
scenarios. In a single-node scenario (where the parent table and child table are on the same node), the performance degradation caused by foreign key checks duringINSERT
andUPDATE
operations on foreign key tables is generally controlled to around 10% compared with tables without foreign keys. In a distributed scenario (where the parent table and child table are on different nodes), the performance degradation is generally controlled to around 30% compared with tables without foreign keys duringINSERT
andUPDATE
operations. -
Dynamic sampling on MemTables
OceanBase Database V4.2.0_CE introduced the dynamic sampling feature, which samples data during the generation of an execution plan. When the number of rows in the SSTable exceeds that in the MemTable, dynamic sampling is performed on SSTable blocks. When the number of rows in the MemTable exceeds that in the SSTable, dynamic sampling is performed on the MemTable. In V4.2.0_CE, this was achieved through full read of the MemTable, which was relatively inefficient. However, in V4.2.1_CE, direct sampling for the MemTable is implemented, utilizing RANGE partitioning to perform interval reads. This enhancement significantly improves the efficiency of dynamic sampling on the MemTable.
-
Parallel read of archived logs
In OceanBase Database V4.1.0_CE, OceanBase Change Data Capture (CDC) can consume archived logs through the CDC service or directly consume logs from the archive destination. In V4.2.0_CE, a network-based standby database reuses the log pulling framework of OceanBase CDC to pull logs from the primary database by using the CDC service. After the CDC service receives a log pulling remote procedure call (RPC) request from OceanBase CDC or a network-based standby database, the service first attempts to read logs from the local disk. If the corresponding logs do not exist in the local disk due to reasons such as log stream garbage collection (GC) or log recycling, and if the tenant has enabled log archiving, the CDC service reads logs from the log archive destination, such as the network file system (NFS) or Alibaba Cloud Object Storage Service (OSS). The log reading performance of the CDC service determines the log consumption speed at the downstream. If the performance of the CDC service in reading archived logs from OSS is poor, the synchronization link or the network-based standby database may lag behind the primary database and may be unable to become synchronized with the primary database. To address this issue, V4.2.1_CE allows the CDC service to consume OSS-archived log files based on the basic capability of parallel consumption of OSS files.
Resource optimization
This version optimized the utilization of system resources in public cloud environments, including user tenant memory, memory of the SYS500 tenant, and operating system memory. For example, for Elastic Compute Service (ECS) instances with specifications of 128 GB or higher, the memory utilization of system resources has been reduced from around 30% to approximately 15%.
High availability enhancement
-
Table-level restore
Prior to OceanBase Database V4.2.1_CE, tenant-level data restore was supported. If data within a table was damaged due to a misoperation, users needed to rely on the physical restore feature to restore the tenant to a previous point in time or use the import/export feature for table-level restore. V4.2.1_CE added support for table-level restore, allowing users to specify which backup data to use, which databases or tables to restore, which tenant to operate on, and the desired recovery point in time on the target cluster.
-
Support for COS
OceanBase Database V4.1.0_CE supports OSS as the backup media. OceanBase Database V4.2.1_CE supplements this support by allowing users to back up logs and data to COS and read backup data from COS for data restore.
Security enhancement
Data integrity protection: The Security Assessment of Commercial Cryptography Application imposes requirements for confidentiality and integrity protection on stored data in information systems. In the versions earlier than V4.2.1_CE, the transparent encryption feature of OceanBase Database has already supported AES_ECD
and SM4_CBC
(which are named in the format of encryption algorithm_encryption mode), providing confidentiality protection for stored data. V4.2.1_CE added support for the GCM mode. In addition to data encryption, the checksum of ciphertext is calculated based on the key, and the ciphertext is checked during decryption to determine whether the ciphertext has been changed, thereby protecting data integrity.
Diagnostic capabilities improvement
-
WR-based data collection framework
The ease of use of the database performance diagnostics feature is closely related to the efficiency of system tuning. Oracle Database 10g introduces proactive automatic diagnostic capabilities such as Active Session History (ASH), Automatic Workload Repository (AWR), and Automatic Database Diagnostic Monitor (ADDM), and provides an inside-out (with information collected by internal components) and top-down (based on the database time and other metrics) database optimization and analysis framework. After decades of develo...
v4.1.0_CE_BP4
Version information
Information | Description |
---|---|
Release date | September 25, 2023 |
Version | V4.1.0_CE_BP4 |
Commit number | 6059cef |
Overview
- This version addressed several customer and internal testing issues to enhance product stability.
- Disable the temporary table feature in MySQL mode.
Bug fixes
- Fixed the issue where a size overflow problem might occur in a SQL statement if there were a large number of OR conditions or if a large number of OR conditions were generated after the SQL statement was rewritten.
- Fixed the issue where the index skip scan plan was used to query partitioned tables due to inaccurate statistics, resulting in memory bloat in the TableRescanCtx module.
- Fixed the issue where new backup tenants might encounter a request queue backlog problem during the switchover between primary and backup nodes.
- Fixed the issue where there was an inconsistency between the data obtained through vectorized table scan and non-vectorized table scan due to vectorized decoding exceptions.
- Fixed the issue where after creating a function index, if the result of the function index expression depended on system variables, Error 4377 might be reported when modifying the system variables and then performing update or delete operations. Added Error code 5500 to distinguish this type of issue.
- Fixed the issue where a disconnection problem might occur during the upgrade from OceanBase Database Community Edition V4.1.0 to V4.2.0. If the source version is earlier than V4.1.0 BP4, this issue can be avoided by first upgrading OceanBase Database and then upgrading OceanBase Database Proxy (ODP).
- Fixed the issue where the disk space calculation error after migration caused the unit to be migrated back and forth.
- Fixed the issue where OBKV failed to use local indexes for queries when partitioned tables were used.
- Fixed the issue of continuous reporting of Error 4013 and inability to successfully refresh the schema when the OBServer node was restarted. The cause of this issue was that the number of records in the
__all_virtual_table_history
table of a tenant in the cluster exceeded 4 million. - Fixed the following issue: When performing a Partition Wise Join operation on two partitioned tables with slightly different partitioning methods, but with the same partitioning method after partition pruning, different results might be returned under different degrees of parallelism.
- Fixed the issue where MySqlConnector (a .NET driver) encountered an error when connecting to OceanBase Database and executing statements related to stored procedure.
版本信息
项目 | 描述 |
---|---|
发布日期 | 2023-09-25 |
版本号 | V4.1.0_CE_BP4 |
Commit 号 | 6059cef |
发版目的
- 解决客户及内部测试遇到的问题,提升版本稳定性。
- MySQL 模式下禁用临时表功能。
缺陷修复
- 修复在 SQL 语句中,当包含大量 OR 条件或进行改写后产生大量 OR 条件的场景下,可能会触发 Size Overflow 的问题。
- 修复在统计信息不准确的情况下,分区表可能会出现查询错误选择了 Index skip scan 计划,导致 TableRescanCtx 模块内存膨胀的问题。
- 修复在主节点和备节点切换的过程中,可能出现新的备租户请求队列积压的问题。
- 修复向量化解码异常可能导致的,Table Scan 向量化查到的数据和非向量化不一致的问题。
- 修复创建函数索引后,若函数索引表达式的结果依赖于系统变量,修改系统变量后再执行 Update/Delete 操作时可能报 4377 的问题。新增 5500 错误码用于区分该类问题。
- 修复在 V4.1.0 版本升级 V4.2.0 版本的过程中,可能会出现断开连接的问题。对于 V4.1.0 BP4 之前的版本,可以通过先升级 OceanBase 数据库,再升级 ODP 的方式来规避该问题。
- 修复迁移后的磁盘空间计算错误导致 Unit 来回迁移的问题。
- 修复分区表场景下,OBKV 使用本地索引查询失败的问题。
- 修复了 OBServer 节点重启时,Schema 刷新持续报 4013 错误,无法刷新成功的问题。导致该问题生成的原因是集群中某个租户的
__all_virtual_table_history
表中记录的数量超过了 400 万条。 - 修复两个分区表分区方式不完全相同,但分区裁剪后分区方式相同在进行 Partition Wise Join 操作时,可能出现的不同并行度下返回结果不相同的问题。
- 修复使用 .NET 驱动 MySqlConnector 连接 OceanBase 数据库时,在执行存储过程中遇到的驱动程序报错问题。