#23.2.4

# 版本定位

YashanDB v23.2.4版本在v23.2.1的基础上丰富了新特性与持续进行性能优化,为可用于长期服务支持的版本。

# 版本说明

版本号:v23.2.4

发版日期:2024 年 9 月 4 日

# 特性更新

YashanDB v23.2.4版本继承自YashanDB v23.2.3版本全部发布的功能,同时新增以下关键能力特性:

# SQL引擎增强

  • 系统包能力增强:

    • DBMS_CRYPTO系统包:新增支持MD5和DES加解密算法,通过指定ENCRYPT_DES、ENCRYPT_3DES、ENCRYPT_3DES_2KEY和HASH_MD5等加密类型进行加解密,满足不同的场景下的安全策略要求。

    • DBMS_SQL系统包:新增支持BIND_VARIABLE_CHAR、COLUMN_VALUE_CHAR、COLUMN_VALUE_RAW、TO_CURSOR_NUMBER、VARIABLE_VALUE_CHAR、VARIABLE_VALUE_RAW、DEFINE_COLUMN_CHAR和DEFINE_COLUMN_RAW多个子函数,支持对RAW类型和CHAR类型的处理功能,丰富对Oracle的兼容性。

  • 存储过程能力增强:

    • PACKAGE子过程支持递归:通过支持出现在PACKAGE头部的子过程在非过程声明区的直接或间接递归的功能,提高了代码可读性和维护性,可以减少外部循环和辅助变量。

    • 优化UDT的对象级权限:在v23.2.4之前只实现了EXECUTE ANY TYPE系统级权限UDT权限,在v23.2.4版本支持了EXECUTE、UNDER的UDT对象级的权限控制,实现了UDT权限的精细化控制和提高了数据库数据安全。

  • 视图支持更新能力:支持通过EDITIONABLE和WITH CHECK OPTION关键字创建可更新视图,支持基于视图更新其基表的能力,并且保证数据一致性和完整性,提高了可读性和可维护性。

  • CTE支持递归功能:通过基于锚部分的结果进行递归操作,递归部分通过与锚部分UNION ALL等连接,以逐步扩展结果集,直到不再有符合条件的行结束递归,实现了CTE的递归功能。简化了复杂查询,通过递归CTE,可以方便地控制递归的层数,避免无限递归的风险。

  • 支持LAST_INSERT_ID()函数:通过调用LAST_INSERT_ID()函数,返回上一个有表达式的函数或自增的结果值。

# 共享集群能力

  • 支持主备集群:共享集群产品新增支持备集群部署形态,满足用户可以在关键核心业务场景的高可用、容灾能力诉求。同时支持非对等规格的数据同步复制,有效降低客户部署备集群部署的成本,为客户业务提供在多地多中心场景的应用和最佳解决方案。

  • 新增支持只读外部表能力:用户可以指定和链接存储系统上的具体CSV文件或数据目录对象DIRECTORY的文件,实现不用导入数据库中就可以像访问普通表一样访问的能力,降低了数据存储和查询的成本,语法兼容Oracle的使用习惯。当涉及大规模数据处理和分析时,外部表可以直接在存储系统上执行查询,避免了数据传输的开销,在数据量巨大的情况下可以显著提高查询性能。

  • 新增支持物化视图:支持物化视图的创建、修改、删除、全量刷新以及基于物化视图的查询优化、支持元数据的导入导出,支持权限控制,同时支持DBMS_MVIEW包提供了一组内置的存储过程,用于物化视图刷新相关操作。

  • DBLINK能力增强:共享集群产品新增通过DBLINK在YashanDB创建远端对象的同义词、调用远端存储过程、查看LOB数据和SEQUENCE等能力。

  • 子查询支持GV视图:解决不同场景下使用GV视图诉求,提升GV使用的便捷性。

  • 性能优化:在ARM架构下,加锁操作会引起CACHE LINE的失效,导致很容易出现跨NUMA节点的内存访问,严重影响并发性能。通过新增参数_SESSION_CACHE_BLOCKS、_SESSION_CACHE_TABLES、_SESSION_BLOCK_CACHE_THRESHOLD,优化block lock和table lock两种锁资源本地化缓存策略,提升读多写多的业务场景性能,同时支持V$SESSION_LOCK_CACHES视图,支持查看每个SESSION的CACHE缓存信息。

# 分布式能力增强

  • 支持DBLINK能力:分布式部署支持通过DBLINK访问Oracle数据库,并且支持数据对象的查询和修改操作。

  • 支持内存资源隔离:

    • 通过Resource Manager资源管理器支持会话级和资源使用组级内存管控,避免单个查询内存过大影响整个集群导致集群不可用的场景。

    • 通过增加多个动态视图,支持对当前全局、stage、SQL和算子级别的内存配额使用情况展示,丰富了诊断能力。

  • 优化内存配额管理:在数据导入场景中,系统自适应调整、限制单个任务的内存上限,均衡单个任务的内存使用量和业务压力,同时提供参数调优和导入任务总数优化,使得系统运行整体效率最优。

  • 支持动态添加目录:分布式部署在v23.2.4版本之前只支持在原有目录下扩容,v23.2.4版本支持通过配置bucket的使用策略,实现了可以在多个磁盘/目录下扩容的能力。

  • 支持REDO在线管理:通过在线增加和删除REDO文件,实现REDO文件的灵活管理能力。

  • 支持表空间集设置:分布式部署在v23.2.4版本之前的表空间集未指定时只能使用USERS表空间且不能修改,v23.2.4版本支持通过ALTER USER指定默认的表空间集,提升系统灵活性。

# 易用性

  • 导数能力增强:

    • imp/exp支持字符集GBK和GBK 18030-2022:imp/exp导出导入时支持指定不同的字符集(GBK、GBK 18030-2022)进行自动转换,提高了工具的易用性。

    • yasldr支持过程与结果展示优化:通过支持导入过程的进度打印、输出导数详情日志,增加了客户的体验感。

    • BIT数据类型导入与导出:exp支持导出BIT数据类型到CSV文件,yasldr支持导入BIT数据类型。

  • 备份集有效性检查:通过使用yasrman工具,使用VALIDATE BACKUPSET命令对指定的备份集进行检查,实现对CTRL、DATAFILE、REDO、归档等文件备份进行坏块校验,提高了备份的运维能力。

  • 支持segment级别统计信息和V$SEGMENT_STATISTICS视图:YashanDB通过对数据库segment级别的统计信息收集和记录,包含segment上的物理/逻辑读写次数、buffer的等待次数等,这些统计信息被展示在V$SEGMENT_STATISTICS视图中,为DBA诊断问题提供准确的定位信息。

  • 日志优化:使用yasrman操作时,会默认打印日志到CATALOG目录下的run.log文件,方便对历史操作进行溯源。

# 驱动

  • JDBC支持XA协议:JDBC驱动支持XA协议标准,通过XA协议来连接同构或异构数据库,在多个节点上执行同一个事务,提供了COMMIT、START、END等原子能力。

  • 驱动连接时支持识别STANDBY角色数据库:只读应用可以配置STANDBY角色数据库连接串,通过JDBC自动连接到备库上,实现应用的读写分离能力。

# 兼容性变更

# 系统参数

配置参数 变更类型 描述 产品形态
WORK_AREA_POOL_SIZE 修改 修改该参数最大值由16G变更为4T 单机(主备)部署、共享集群部署、分布式部署
CHECKPOINT_INTERVAL 修改 修改该参数默认值由100000字节变更为128M 单机(主备)部署、共享集群部署、分布式部署