#23.2.10

# 版本定位

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

# 版本说明

版本号:v23.2.10

发布日期:2025 年 2 月 27 日

# 新增功能

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

# SQL引擎增强

  • PL性能优化:

    • UDF性能优化:该版本优化了用户自定义函数性能,当调用Deterministic函数且输入为绑定参数时,YashanDB会优化执行的动态常量特性缓存,加快执行效率。

    • 循环语句优化:在循环控制语句的场景下,包含for、loop、while等,commit时默认采用batch nowait模式;当for语句块中只有insert语句时,优化器会改写为forall insert采用批量插入。减少提交次数提升事务效率。

    • table()函数性能优化:通过UDT新增引用依赖的判断,当table()入参为UDT TABLE或UDT ARRAY时,可以与不存在引用依赖的表之间产生hash join或merge join,增加执行计划选择,在特定场景下提升效率。

  • 功能增强:

    • 在v23.2.10版本之前,当数据库设置GBK/GB18030字符集时,在SQL中filter使用like对中文字符条件进行过滤且不包含escape的场景下性能较差,该版本优化了like算法,使GBK/GB18030字符集在该场景下性能提升到与UTF8字符集相同。

    • 在v23.2.10版本之前,YashanDB开启密码强度后,规则是固定的(即密码长度为8 - 64位且必须同时包含数字、大写字母、小写字母和特殊字符)。为了满足不同用户的安全准则和能覆盖更多的业务场景诉求,该版本YashanDB通过配置_CHECK_PASSWORD_COMPLEXITY隐藏参数,实现对密码长度的控制,增加对密码管理的灵活性。

# 分布式能力

  • 支持对LSC表的outline lob字段长度进行计算,包含LENGTH、CHAR_LENGTH、LENGTHB等函数对字符和字节进行长度统计。

  • 支持DBMS_STAT高级包的LOCK/UNLOCK接口,实现对表/索引的统计信息进行加锁和解锁,可按需控制目标表的相关SQL执行计划保持一致,主要用于表存在频繁大数据量变化和自动收集统计信息任务时间不匹配导致执行计划频繁变动的场景。

  • 分布式列存支持地理位置函数ST_DISTANCE_SPHERE,通过传入两个地点的纬度和经度(各2个参数),计算两个点在地球球面上的距离,单位为米。

  • 在v23.2.10版本之前,LSC表执行insert /+bulkload/ into时只能设置autocommit off模式,需要在脚本或SQL中显式加上事务提交语句,不然可能会导致部分未结束事务。该版本通过新增ENABLE_BULKLOAD_AUTO_COMMIT参数,实现对insert /+bulkload/ into的自动提交控制,使用户在脚本中使用bulkload特性时更加灵活,代码更简洁。

  • 列存create table as select支持bulkload能力,通过在create table as后的select加上/+bulkload/的hint,实现LSC表在使用CTAS语法时使用bulkload功能,达到批量插入LSC表的效果,可以减少redo的产生,提高插入速度。

  • 在v23.2.10版本之前,create table as select失败时会直接报错返回给客户端。该版本通过对内存配额、会话资源和相关报错等信息判断,实现对create table as select失败时,且如果是在insert select阶段遇到资源不足场景下可以进行自动重试,无需用户干预,最大重试时间为30秒,重试时间内仍不成功才会返回失败。

# 易用性

  • 支持GV$EVENT_NAME/V$EVENT_NAME视图:在排查数据库故障或异常情况时,可使用V$EVENT_NAME视图显示YashanDB等待事件的信息,帮助确定问题的根源。同时,可以定期监控该视图,及时发现数据库性能的变化趋势,根据监控结果对数据库进行相应的调优操作。

  • 在v23.2.10版本之前,yasldr导入CSV格式的GIS数据时,一次导入只能使用参数指定一个SRID,无法满足一个表存在多个SRID的使用场景。该版本yasldr增加了对Geometry列进行函数计算的能力,实现了导入不同行不同的SRID,提高导入GIS数据灵活性。

  • AWR能力持续增强,完善细化共享集群AWR报告相关统计数据时间单位等信息,方便相关统计信息的查阅和分析;新增VM的统计项能力,显示在指定时间段内的VM变化情况;新增缓存的总体摘要报告部分统计项,显示在指定时间期间的缓存使用率。

# 驱动

  • 支持Perl驱动:兼容了Perl语言中和数据库进行通讯的标准接口DBI模块,包含一系列的方法、变量和常量,支持了使用Perl驱动连接YashanDB数据库进行SQL查询、处理结果集、事务管理等操作。相较于其他驱动,Perl驱动具备高效处理文本、更易于学习与使用等优势。

  • 支持GO驱动并适配GORM框架:支持使用Golang语言对YashanDB数据库进行开发,同时支持GORM框架,使得开发人员可以使用Go代码轻松实现数据库的增删改查操作,无需编写复杂的SQL语句。

  • python驱动功能增强:

    • 支持Django ORM框架3.2.25版本,使开发人员轻松切换到YashanDB,而无需修改大量的代码,提高了代码的可移植性,提升开发效率。

    • 支持loadBalance负载均衡,在高可用主备和负载均衡场景下,可以配置多个IP/PORT,应用将自动识别出连接数最少的节点并连接,实现负责均衡的效果。

  • ODBC驱动功能增强:

    • 支持SQLExecDirectW函数,允许应用程序直接发送SQL语句到数据库(宽字符版本,它的后缀W表示使用宽字符 (Unicode) 版本),一步完成语句准备和执行,支持SELECT、INSERT、UPDATE等SQL语句。

    • 支持SQLMoreResults函数,用于处理多结果集的场景。检查是否还有更多结果集可以处理,移动到下一个结果集。

    • 支持GUID数据类型,是全局唯一标识符,通常用于标识数据库中的对象,通常以字符串形式表示,例如{12345678-1234-1234-1234-1234567890AB}。

  • 支持GeoServer 2.25.5版本,通过提供gt-jdbc-yashandb-xxx方言包和YashanDB JDBC驱动,用户可在GeoServer进行配置后,选择YashanDB为数据库源,可以访问读取矢量数据、发布图层等操作,具体操作请查阅GeoServer工具对接示例(gt-jdbc)