#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 | 单机(主备)部署、共享集群部署、分布式部署 |