#23.2.1

# 版本信息

版本号:v23.2.1

发版日期:2024 年 4 月 1 日

# 版本定位

YashanDB v23.2版本定位为长期服务版本(LTS),本次版本面向金融、央国企和政府等行业客户场景诉求,对产品不断进行打磨和完善,在Oracle兼容性、集群高可用能力、内核能力和产品易用性等特性上做了大幅优化和提升。目标支持客户项目批量复制,推荐客户在生产系统上使用。本版本的核心能力特性如下:

# 特性更新

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

# SQL引擎增强

  • 支持GB18030字符集

    为了适配国标和响应推进基础软件国产化,YashanDB从v23.2.1版本开始,行存执行在服务端和客户端的字符集支持设置GB18030,按照GB 18030-2022标准实现级别为3。即支持了国家标准所规定的变长多字节字符集,且完全向后兼容GB 2312-1980,及基本兼容GBK。

  • 存储过程能力增强

    • 支持BULK COLLECT语法:采用BULK COLLECT子句可以将查询结果一次性地加载到集合类型变量中,避免Cursor逐条地处理的性能损耗。

    • 支持FORALL语法:在PL中可使用FORALL子句批量执行语句,简化PL代码的编写,同时在PL程序中更新很多行数据的程序的场景下,可以显著提高处理性能。

  • 新增系统包:

    • 新增DBMS_LOB系统包,提供对大型对象(LOB)数据类型的访问和操作的能力。

    • 新增DBMS_ROWID系统包及对应子函数,支持通过输入ROWID获取的相关信息,例如数据库块号、相对文件号和数据行号等。

    • 新增了DBMS_STATS、DBMS_UTILITY、UTL_FILE等系统包的对应子函数。

  • 新增空间数据(GIS)函数:在v23.1版本中,YashanDB已经支持空间数据库并在实际业务场景得到验证和使用,为了扩展使用场景,我们持续新增相应功能。主要实现如下GIS函数:

    • 支持聚集函数:ST_Collect、ST_Extent。

    • 支持空间关系算子:ST_ContainsProperly、ST_DWithIn。

# 存储引擎增强

  • 支持在线重命名表空间和索引

    当我们希望重新规划表空间和索引名称时,需要进行数据迁移到新表空间,会随着数据量增大而花费的时间越大。重新规划索引名需要先删除后创建,这种方法需要消耗较大的数据库资源和时间。YashanDB v23.2.1版本支持了在线重命名表空间和索引功能后,只需要秒级就能完成对表空间名和索引名的重新规划。

  • 支持只读外部表

    新增支持只读外部表功能,语法兼容Oracle的使用习惯。用户可以指定和链接存储系统上的具体CSV文件或者数据目录对象[DIRECTORY](../../开发手册/SQL参考手册/SQL语句/CREATE DIRECTORY)的文件,实现不用导入数据库中就可以像访问普通表一样访问的能力。具备隔离的特性可以减轻数据库的存储负担,同时允许更大规模的数据存储,降低了数据存储和查询的成本。当涉及大规模数据处理和分析时,外部表可以直接在存储系统上执行查询,避免了数据传输的开销,在数据量巨大的情况下可以显著提高查询性能。

  • 备份恢复能力增强:

    • 支持单独备份归档日志和手动注册归档日志,支持使用归档日志恢复到指定SCN:YashanDB在v23.2.1版本中在物理备份上支持了独立备份归档日志,通过命令可以手动注册归档日志信息到控制文件中,并支持在已Restore的数据库中使用归档日志Recover到指定的SCN。同时兼容适配主流的第三方备份恢复软件。

    • 支持修改控制文件记录的信息:在数据文件或redo文件被人工改变路径后,可以将YashanDB实例切换到NOMOUNT状态,通过修改控制文件里的路径信息后,YashanDB即可应用新的数据或redo文件路径,正常启动运行。

  • 支持显式LOCK TABLE

    在数据库服务响应大并发业务时,会自动对需要保护的数据进行加锁处理,防止并发修改导致数据错乱,这种加锁形式是隐式的。在特定业务场景下,需要人工干预对数据库对象进行显式加锁,来保证业务逻辑的正确性,YashanDB在v23.2.1版本支持了LOCK TABLE语法实现了显式加锁能力,包括共享(SHARE)和排他(EXCLUSIVE)两种锁定模式,支持对表和视图对象加锁。

  • 支持按列加密

    支持通过ENCRYPT_AES128函数对单列或多列内的字符串数据进行加密和DECRYPT_AES128函数解密数据。

  • 压缩能力增强

    YashanDB v23.2.1版本新增支持LZ4和ZSTD两种压缩算法,支持创建表时根据不同的字段数据类型选择不同的压缩编码。实际测试导入1TB的LINEITEM表数据,压缩比可以达到1:4.5。同时支持根据数据类型特征自动选择编码,降低了用户的使用难度,节省了数据库的存储成本。

# 共享集群能力

  • 内核功能增强:

    • 分区能力增强:新增支持二级分区(RANGE,LIST,HASH)两两组合的9种二级分区表,支持本地和普通二级分区索引,支持分区剪枝。

    • 支持DBlink:支持通过YashanDB连接到YashanDB或Oracle数据库(读写模式),支持DDL、DML、DQL等常规操作,同时支持通过Oracle反向连接到YashanDB数据库;支持通过V$DBLINK_OBJ_STAT以及V$DBLINK_MEM_STAT视图来观测DBlink执行过程。

    • 统计信息优化:在v23.1版本仅支持通过DBMS_STATS高级包手动收集统计信息,从v23.2.1版本开始支持统计信息自动收集,通过定时任务GATHER_STATS_JOB,默认每日凌晨2:00开始收集全库的统计信息,包括统计信息缺失或者统计信息已经失效的对象的收集。可以通过DBMS_SCHEDULER高级包维护该统计信息定时任务。

    • 表空间管理能力提升:支持本地临时表空间和本地SWAP表空间,可以提供实例级的临时数据访问服务,降低实例间的信息交互同时提升相关业务的性能。本地临时表空间的临时文件支持崖山文件系统(YFS)和本地磁盘路径。

    • 集群消息通信处理优化:支持根据业务情况实现自调优策略,在高负载情况下可以自动扩展消息处理资源,后台服务线程自管理,在业务负载降低后自动回收已扩展的消息处理资源,减少业务使用复杂度。

  • 备份恢复优化:

    • 支持远程备份:支持通过yasrman远程连接数据库,在工具侧生成备份集,同时支持将工具侧的备份集恢复到远程数据库。

    • 支持指定时间点恢复(PITR):在v23.2.1版本支持基于时间点的备份恢复,支持通过客户端命令触发,也支持通过yasrman工具简化使用。

    • 支持归档清理能力:v23.1版本无法对归档日志进行清理,业务长期运行会导致磁盘占用较大,v23.2.1版本支持了对归档日志的手动清理和自动清理,同时还支持指定SCN对归档日志清理。

    • yasrman工具支持:v23.1版本仅支持通过客户端命令发起备份操作,不具备备份管理能力。v23.2.1版本增强yasrman备份恢复能力,用户可以通过yasrman发起备份和管理备份集。

  • 设备兼容性:

    • 共享集群在v23.1版本中对磁阵的操作依赖SCSI协议,在v23.2.1版本取消了对磁阵SCSI协议的依赖,兼容多种协议类型,支持更多的存储类型设备。
  • 可靠性增强:

    • YFS支持元数据冗余:支持为冗余度为External的DiskGroup的元数据提供冗余备份。元数据被破坏时,可以从Fast Recovery Area数据区获取备份数据并做自动恢复,提升YFS元数据的可靠性。

    • YFS支持数据多副本:支持在多FailGroup的情况下,用户可以通过多副本机制进行数据校验和恢复。

    • 空间利用优化:在v23.1版本中当YFS文件被Drop或Truncate之后,空间和目录不会被回收复用,导致空间利用率降低。在v23.2.1版本中支持了对应的空间和目录复用,提升YFS空间利用率。

  • 易运维:

    • 支持性能报告:新增支持集群相关报告信息(Global Cache Load Profile、Global Cache Efficiency Percentages等),提供运行期间各种集群相关的统计数据,用户可以更好的了解共享集群性能表现。

    • 配置参数优化:优化共享集群参数,例如GCS_TASK_COUNT、GLS_TASK_COUNT、GRC_TASK_COUNT等部分参数会根据系统负载以及运行情况综合分析实现了自调优策略,降低用户使用成本。

    • 优化集群监控:增加共享集群独有资源的使用情况监控,GCS相关的统计信息、增加共享集群消息ICS,锁GLS等相关统计信息,详细信息请参考:视图&系统表。

# 分布式能力

  • 统计信息能力增强:

    支持统计信息自动收集、全库收集、整个schema收集等新功能,YashanDB在v23.2.1版本实现分布式部署模式下通过特定任务自动收集统计信息,通过设置特定时间从YashanDB运维管理工具yasboot下发到分布式各个节点执行收集统计信息SQL脚本,实现了每天默认凌晨2:00开始收集全库的统计信息,包括统计信息缺失或者统计信息已经失效的对象的收集。

  • 支持CPU资源隔离

    支持对用户级别CPU资源管理,通过DBMS_RESOURCE_MANAGER系统包创建资源组,映射用户资源组关系,及创建资源计划,来实现按照用户管控CPU资源。YashanDB在MN、CN和DN各类节点上都实现了CPU资源隔离。

  • 支持内存动态控制

    支持计算内存预分配内存配额,分布式部署形态下并发执行SQL时,可以有效通过参数控制单个stage分配内存配额,防止瞬间申请内存过大导致任务失败。同时,YashanDB还支持stage申请内存排队机制,并且在初次申请失败后具备重试能力,提高了SQL在总内存不足时执行失败的容错率。

  • 支持一主一备部署形态

    在v23.2.1版本之前,YashanDB分布式DN组只支持单主和一主多备的部署模式,为了满足业务多样性,同时又可以节省成本,因此,YashanDB在v23.2.1版本实现了DN组一主一备的部署形态。DN组一主一备的部署形态还支持故障自动切换能力,仅支持最大保护模式下,通过投票和切换,新主先降为最大可用模式提供服务,在旧主重连同步前,不允许再次切换。在该场景下,YashanDB的高可用能力满足RTO<10S,RPO=0。

  • 支持可视化运维:

    为了提高分布式部署形态的易用性,YashanDB在v23.2.1版本中实现了分布式可视化运维能力,通过YashanDB监控运维工具(YCM)运维YashanDB分布式数据库,提供分布式的巡检管理、监控告警、备份恢复和慢SQL分析等可视化功能,实现了便捷的运维效率。

# 驱动

  • 支持配置多IP

    在实际业务场景中,除了数据库具备高可用能力以外,还需要加上驱动能力一起配合实现的高可用方案才能达到真正的业务高可用。为了支撑广泛的高可用场景,YashanDB在v23.2.1版本驱动实现了多IP配置。在应用端配置YashanDB驱动时,例如JDBC、C驱动、OCI等,可以配置多个IP,包含主备的IP,当数据库发生主备切换时,驱动配置无需修改,应用可以连接到新的主库上,实现业务快速恢复。

  • 新增驱动接口:为了满足更广的业务场景,YashanDB团队持续丰富驱动类型和新增已支持的驱动功能,优先实现通用的驱动接口能力。主要接口能力如下:

    • directExecute支持绑定参数

    • 新增SQLInput、ResultSet、PreparedStatement、Connection等标准接口的函数

    • JDBC对fetch接口支持流式,提升时延较大和AP等场景性能

    • 支持Array、Object、及嵌套等UDT类型

  • 支持使用域名连接数据库:在YashanDB v23.2.1版本之前,只支持通过客户端(C驱动、JDBC、ODBC等)配置IP+PORT连接YashanDB服务端。但是实际业务场景中,很多应用都是使用域名连接服务器或者数据源从而提高易用性和可标记性,所以,为了满足更多应用场景,YashanDB在v23.2.1版本支持通过驱动配置域名+端口连接到服务端。

# 易用性

  • 客户端能力增强

    • 支持显示字段宽度设置、支持表头显示设置、支持反馈显示信息设置,用户可以自定义输出格式和效果。

    • 支持静默登陆,便于用户脚本批量执行时,减少不必要的信息输出。

    • 批量执行报错支持中断退出,当通过yasql执行一批SQL时,希望中间失败就报错退出,不往下执行后续的SQL。

  • 导数能力增强

    • imp/exp工具:在使用imp导入数据到数据库中时,如目标表已存在数据,支持使用参数TRUNCATE=Y覆盖已存在的表数据。

    • yasldr功能:在实际操作场景中,经常遇到单个文件过大时只能串行导入,导致导入效率低时间消耗长。yasldr导入工具支持同时导入多个CSV文件,从而提高导入效率。

  • 支持一键式收集操作系统和数据库信息

    为了更快定位问题和优化系统,YashanDB在v23.2.1版本提供一键式诊断所需信息,包含操作系统基本信息、操作系统和数据库日志、数据库配置信息和数据库视图等信息,同时打包到指定目录,使我们更快、更准地获取到便于定位定界的相关信息,支撑问题解决和性能优化。

  • 支持HUE

    在大数据业务中,Hadoop User Experience(HUE)系统被业界广泛使用,经常Web控制台上与Hadoop集群进行交互,来分析处理数据、执行SQL等操作。YashanDB为了更好的对接大数据生态,在v23.2.1版本中支持了python中的ORM(Object Relational Mapping)工具SQLAlchemy,对接了HUE系统,使用户更好的使用HUE在YashanDB上进行数据分析、报表生成、SQL查询和任务调度等工作。

# 版本升级

  • 支持滚动升级

    为了提高业务可用性、缩减升级YashanDB时间、简化升级操作流程,YashanDB在v23.2.1版本中支持了小版本(第4位版本号)的滚动升级能力,通过YashanDB配套的运维管理工具yasboot实现在数据库不停机的情况下,将数据库软件升级到新版本。

# 兼容性变更

# 产品行为

变更项 示例 变更前 变更后
date/timpestamp作为数据类型关键字时,返回字符串匹配使用的日期时间格式 select date'2012-1-1' from dual; 当前会话的data_format/timestamp_format配置参数值 date按照 yyyy-mm-dd格式匹配,timestamp按照yyyy-mm-dd hh24:mi:ss.ff匹配。跟当前设置的data_format/timestamp_format值无关
JDBC驱动通过resultset.getObject接口获取tinyint、smallint类型的数据,返回结果的数据类型 历史用户获取tinyint数据如下:int tinyintVal = (int) resultSet.getObject(1);修改后上述语句将报错java.lang.ClassCastException: java.lang.Byte cannot be cast to java.lang.Integer
返回int类型数据 返回byte、short类型数据

# 产品规格

规格名称 规格类型 变更类型 描述 产品形态
LUN路径长度 最大值 新增 31个字节 共享集群
单个文件大小 最大值 新增 180TB 共享集群
单个disk大小 最小值 修改 由12MB变更为16MB 共享集群

# 视图&系统表

视图名称 变更类型 描述 产品形态
DBA_RSRC_CONSUMER_GROUPS 新增 显示数据库中所有资源使用组的信息 单机主备、共享集群、分布式
DBA_RSRC_GROUP_MAPPINGS 新增 显示数据库中用户和资源使用组之间的映射关系 单机主备、共享集群、分布式
DBA_RSRC_PLAN_DIRECTIVES 新增 显示数据库中所有资源指令的信息 单机主备、共享集群、分布式
DV$CPUSTAT 新增 显示分布式集群中所有节点的CPU资源管理的汇总信息 分布式
DV$SLICES 新增 分布式部署中,除CN外,本视图显示当前实例的所有LSC的存储相关统计信息,以slice为单位进行展示;在CN上,本视图显示MN实例的所有LSC表冷数据的存储相关统计信息 分布式
DV$SEGMENTS 新增 用于查询分布式集群所有节点已经分配的segment信息 分布式
GV$YFS_DISK 新增 显示YFS磁盘(Disk)信息 共享集群
GV$YFS_DISKGROUP 新增 显示YFS磁盘组(Diskgroup)信息 共享集群
GV$YFS_FILE 新增 显示YFS文件(File)信息 共享集群
V$INSTANCE_RECOVERY 新增 显示最近一次实例恢复任务的信息 共享集群
V$CLUSTER_MESSAGE/GV$CLUSTER_MESSAGE 修改 新增TASK_SID字段,表示处理消息的后台会话ID 单机主备、共享集群、分布式
V$CLUSTER_MESSAGE_POOL/GV$CLUSTER_MESSAGE_POOL 修改 新增BLOCK_COUNT字段,表示消息池当前使用block的数量;新增USE_COUNT字段,表示消息池已经分配的缓存单元数量;新增RECYCLE_TIMES字段,表示申请内存时淘汰其他池的次数 单机主备、共享集群、分布式
V$CLUSTER_TASK_STAT/GV$CLUSTER_TASK_STAT 修改 新增SESSION_ID字段,表示会话编号;新增CORE_TASK字段,表示是否是核心线程 单机主备、共享集群、分布式
V$YFS_FILE 修改 新增TYPE字段,文件类型编号,200以上为元数据类型,类型编号由DB指定 单机主备、共享集群、分布式
V$TABLESPACE 修改 新增SHARED字段,表示是共享临时表空间,还是本地临时表空间 单机主备、共享集群、分布式
GV$2PC_PENDING 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$CM_CLUSTER_INFO 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$CM_GROUP_INFO 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$CM_NODE_INFO 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$CM_TASK_INFO 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$DATA_CONNECTION 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$DIN_LINK 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$DIN_NODE 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$DIN_STAT 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$ELECTION 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$NODE 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$PUB_STAT 删除 从v23.2.1版本起,该动态视图被废弃 共享集群
GV$TASK 删除 从v23.2.1版本起,该动态视图被废弃 共享集群

# 系统参数

配置参数 修改类型 描述 产品形态
CLUSTER_MESSAGE_POOL_SIZE 新增 表示共享集群消息池占用内存空间大小 共享集群部署
DIN_HB_TIMEOUT 新增 表示指定分布式场景下,内部网络心跳超时时间,单位为秒 分布式部署
DATA_TRANSFORMER_MAX_WORKERS 新增 表示LSC表后台转换任务的最大线程数。此参数已经过调优,大部分场景不需要调整此参数,如无明确需求,不建议调整该参数 单机部署、分布式部署
GTS_BROADCAST_TIME 新增 表示GTS同步时间,单位为毫秒 分布式部署
RSRC_MODE 新增 表示CPU资源管理功能开关,目前仅在单机部署和分布式部署下才生效 单机部署
SCOL_REPL_WORKERS 新增 表示指定静态slice文件同步的工作线程数,如果网速够快可调大此配置提高同步速度 单机部署、分布式部署
SCOL_REPL_BUFFER_SIZE 新增 表示指定静态slice文件同步缓存buffer大小 单机部署、分布式部署
PARSER_STACK_SIZE 新增 表示指定YFS解析diskgroup管理语句的栈空间。 共享集群部署
RECY_TASK_INTERVAL 新增 表示上次执行资源回收扫描任务距离下次执行扫描任务时间间隔 共享集群部署
RECY_UPPER_THRESHOLD 新增 表示资源回收上限 共享集群部署
RECY_LOWER_THRESHOLD 新增 表示资源回收下限 共享集群部署
YFS_FRA_ENABLE 新增 表示用于设定是否开启快速恢复区。默认开启TRUE 共享集群部署
COMPRESSION 修改 修改该参数默认值由UNCOMPRESSED变更为lz4 单机部署、分布式部署
MAX_PARALLEL_WORKERS 修改 修改该参数取值范围由[0,4096]变更为[1,4096] 单机部署、共享集群部署、分布式部署
MAX_SESSIONS 修改 修改该参数取值范围由[48,16384]变更为[64,16384] 单机部署、共享集群部署、分布式部署
GCS_TASK_COUNT 修改 修改该参数默认值由3变更为0;修改该参数取值范围由[2,64]变更为[0, 128] 共享集群部署
GLS_TASK_COUNT 修改 修改该参数默认值由2变更为0;修改该参数取值范围由[2,64]变更为[0, 128] 共享集群部署
GRC_TASK_COUNT 修改 修改该参数默认值由2变更为0;修改该参数取值范围由[2,16]变更为[0, 64] 共享集群部署
AUDIT_FLUSH_INTERVAL 修改 修改该参数取值范围由[10,5000]变更为[50,5000](单位:ms) 单机部署、共享集群部署、分布式部署
CHARACTER_SET 修改 修改该参数取值范围新增GB18030 值 单机部署、共享集群部署、分布式部署
REDO_BUFFER_PARTS 修改 修改该参数默认值由4变更为8 单机部署、共享集群部署、分布式部署
REDO_BUFFER_SIZE 修改 修改该参数默认值由8M变更为64M 单机部署、共享集群部署、分布式部署
RECY_INTERVAL 修改 修改该参数默认值由259200变更为2592000;新增取值范围 共享集群部署
SQL_MAP 修改 修改该参数由隐藏参数修变更为用户参数 单机部署、共享集群部署、分布式部署
SHM_POOL_SIZE 修改 修改该参数默认值由32MB变更为2GB;修改该参数取值范围由[32MB - 无穷大]变更为[64MB,510GB] 共享集群部署
DIN_RECONNECT_TIME 过时 从v23.2.1版本起,该系统参数被过时 分布式部署
BROADCAST_GTS_TIME 过时 从v23.2.1版本起,该系统参数被过时 分布式部署
CGROUP_FLAG 过时 从v23.2.1版本起,该系统参数被过时 单机部署
INTERCONNECT_MESSAGE_POOL 废弃 从v23.2.1版本起,该系统参数被废弃,由新增CLUSTER_MESSAGE_POOL_SIZE控制 共享集群部署
VOTING_DISK 删除 删除配置参数,变更为命令行配置 共享集群部署
NETWORK_HB_TIMEOUT 删除 删除配置参数,变更为命令行配置 共享集群部署
DISK_HB_KEEP_ALIVE 删除 删除配置参数,变更为命令行配置 共享集群部署

# 升级说明

产品形态 升级说明 升级方式
单机 支持从v22.2版本升级到23.2版本
支持从v23.1版本升级到23.2版本
离线升级
分布式 支持从v23.1版本升级到v23.2版本 离线升级
共享集群 支持从v23.1版本升级到v23.2版本 离线升级

# 周边配套

YashanDB数据库 v23.2版本推荐使用的平台工具版本如下:

组件 配套版本
Yashandb JDBC 驱动程序(JDBC) v1.6.9
Yashandb ODBC 驱动程序(ODBC) v23.2.1
Yashandb C 驱动程序(C) v23.2.1
Yashandb C# 驱动程序(ADO.NET) v23.2.1
Yashandb Python 驱动程序(Python) v1.0
YashanDB 客户端(yasql) v23.2.1
YashanDB 监控运维工具(YCM) v23.2.1
YashanDB 迁移平台工具 (YMP) v23.2.1
YashanDB 开发者工具 v1.0

# 性能测试

# YashanDB数据库单机主备部署的TPC-C性能测试

# 硬件环境

CPU规格 操作系统 内存大小 磁盘规格 数量 用途
Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz (vCPU = 104) CentOS Linux release 7.9.2009 (Core) 376GB 2.9T SSD 2台 数据库主库服务端(包含客户端)、数据库备库服务端

# 数据库参数配置

VM_BUFFER_PARTS=8 
VM_BUFFER_SIZE=30G 
REDO_BUFFER_PARTS=8 
REDO_BUFFER_SIZE=128M 
SHARE_POOL_SIZE=2G 
LARGE_POOL_SIZE=4G 
UNDO_RETENTION=30 
DATA_BUFFER_SIZE=180G 
WORK_AREA_POOL_SIZE=2G 
WORK_AREA_HEAP_SIZE=2M 
UNDO_SHRINK_ENABLED=FALSE 
CHECKPOINT_INTERVAL=128M 
CHECKPOINT_TIMEOUT=1000000000

# BenchmarkSql参数配置

newOrderWeight=45 
paymentWeight=43 
orderStatusWeight=4 
deliveryWeight=4 
stockLevelWeight=4

# 测试结果

YashanDB数据库v23.2.1版本单机主备部署在CentOS系统上性能稳定,tpmC (NewOrders)值为160W。

平台 仓数 并发数 测试时长 tpmC (NewOrders)
X86 1000 256 10分钟 160W

# YashanDB数据库共享集群部署的TPC-C性能测试

# 硬件环境

CPU规格 操作系统 内存大小 数量 用途
Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz(vCPU = 128) CentOS Linux release 7.9.2009 (Core) 768G 2台 数据库服务端
Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz(vCPU = 128) CentOS Linux release 7.9.2009 (Core) 768G 1台 客户端

# 存储配置

设备类型 共享存储
设备型号 混闪磁盘阵列联想Lenovo DE6600H
详细参数 硬盘:8块1.9TB 2.5英寸NVMe盘(SSD) 端口:8个12Gb SAS 扩展端口 缓存容量:256GB缓存
数量 硬盘数量:3块(容量5TB)

# 数据库参数配置

DATA_BUFFER_SIZE=200G 
VM_BUFFER_SIZE=25G 
VM_BUFFER_PARTS=8 
REDO_BUFFER_SIZE=64M 
REDO_BUFFER_PARTS=8 
LARGE_POOL_SIZE=1G 
WORK_AREA_POOL_SIZE=2G 
UNDO_RETENTION=3 
UNDO_SHRINK_ENABLED=FALSE 
WORK_AREA_HEAP_SIZE=2M 
CHECKPOINT_TIMEOUT=1000000000 
CHECKPOINT_INTERVAL=150G 
MAX_WORKERS=600 
SHARE_POOL_SIZE=10G 
COMMIT_LOGGING = BATCH 
DBWR_COUNT=8 
DBWR_BUFFER_SIZE=16M

# BenchmarkSql参数配置

newOrderWeight=45 
paymentWeight=43 
orderStatusWeight=4 
deliveryWeight=4 
stockLevelWeight=4

# 测试结果

YashanDB数据库v23.2.1版本共享集群部署在CentOS系统上性能稳定,tpmC (NewOrders)值为312W。

平台 仓数 并发数 测试时长 tpmC (NewOrders)
X86 1000 700 10分钟 312W

# YashanDB数据库分布式部署的TPC-H性能测试

# 硬件环境

CPU规格 操作系统 内存大小 磁盘规格 数量 用途
Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (vCPU = 128) CentOS Linux release 7.9.2009 (Core) 128G 1.7T HDD 1台 数据库服务端JDBC客户端
Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (vCPU = 128) CentOS Linux release 7.9.2009 (Core) 256G 1.7T SSD 1台 数据库服务端
Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (vCPU = 128) CentOS Linux release 7.9.2009 (Core) 256G 1.7T SSD 1台 数据库服务端
Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (vCPU = 128) CentOS Linux release 7.9.2009 (Core) 256G 1.7T SSD 1台 数据库服务端

# 数据库参数配置

VM_BUFFER_SIZE = 50M 
LARGE_POOL_SIZE = 50M 
SHARE_POOL_SIZE = 300M 
DATA_BUFFER_SIZE = 100M 
DEGREE_OF_PARALLEL = 32 
SCOL_DATA_BUFFER_SIZE = 100G 
COLUMNAR_VM_BUFFER_SIZE = 50G

# 测试结果

YashanDB数据库v23.2.1版本分布式部署在如上环境配置上,在CN节点上使用TPC-H标准模型1TB数据测试,按Q1-Q22顺序执行查询语句取平均值。

TPCH YashanDB统计结果(s)
Q1 8.834
Q2 11.728
Q3 7.795
Q4 5.220
Q5 9.427
Q6 0.271
Q7 8.494
Q8 5.264
Q9 26.850
Q10 7.184
Q11 1.640
Q12 1.833
Q13 19.666
Q14 1.714
Q15 3.400
Q16 3.578
Q17 5.757
Q18 29.000
Q19 3.261
Q20 2.691
Q21 18.819
Q22 3.674
合计 186.101

# 版本约束

约束项 产品形态
1 增加节点时,主备集群所有节点需处于正常可用状态,增加节点后数量不超过原有规模约束 单机部署
2 删除节点时,不允许直接删除主节点,不可将主备集群中所有节点全部删除 单机部署
3 增加节点时,集群所有节点需处于正常可用状态。不可组内无主节点时扩容 分布式部署
4 删除节点时,不可将组内所有节点删完。不可直接删除主节点 分布式部署
5 yasom所在机器需要额外规划足够的磁盘容量来存放导数所需的原始数据文件和拆分后文件。分布式推荐用yasboot导数,但是目前yasboot对数据存放是有要求的,数据必须跟yasom放同一台机器 分布式部署
6 统计信息收集过程中,如果存在CN故障,则需要恢复CN后重新收集 分布式部署
7 扩容CN后,需要重新收集统计信息,如果有使用OUTLINE,则需要在收集统计信息完成后,重建OUTLINE 分布式部署
8 CN扩容,DN组在线扩缩容过程中会阻塞DDL操作,阻塞alter system set操作 分布式部署
9 GV$SQL/GV$SQLSTATS/GV$SQLAREA视图中sql_fulltext列最大支持显示32000 共享集群部署
10 exp导出一个视图,如果视图依赖的表包含UDT列,执行imp导入时,需要对用户授予EXECUTE ANY TYPE权限 单机部署、共享集群部署
11 过程体内变量与过程体内SQL语句中的列别名名称相同时,PL解析可能报错 单机部署、共享集群部署
12 过程体中的SQL语句存在语法错误时,返回的错误消息的Position不准确 单机部署、共享集群部署、分布式部署
13 执行blob转字符串时,如blob不是合法的utf8编码,行存引擎会忽略不合法的字符,列存引擎会返回错误 单机部署、共享集群部署、分布式部署
14 SQLMAP原始语句及映射语句长度不得超过32000字节 单机部署、共享集群部署、分布式部署