#Release Notes
# 版本信息
发版日期:2024 年 9 月 30 日
版本号:v23.3.1
# 版本定位
YashanDB数据库v23.3版本定位为架构版本,新版本全面增强Oracle兼容性,大幅度提升执行算子性能,完善共享集群产品化功能和加强高可用能力,同时满足国密要求,为平替金融核心业务系统国产化奠定基础。支持单机部署、分布式、共享集群等产品形态,配套数据迁移、监控运维和开发者工具,满足支撑各类企业应用。
# 特性更新
YashanDB v23.3版本继承自YashanDB v23.2版本全部发布的功能,同时新增了以下关键特性:
# SQL引擎增强
系统包能力增强
新增UTL_RAW系统包,支持BIT_AND、BIT_COMPLEMENT、BIT_OR、BIT_XOR、COMPARE、CONCAT、COPIES、LENGTH、SUBSTR、CAST_TO_RAW、CAST_TO_VARCHAR2、CAST_TO_BINARY_INTEGER、CAST_FROM_BINARY_INTEGER、CAST_TO_BINARY_DOUBLE、CAST_TO_BINARY_FLOAT、CAST_FROM_BINARY_FLOAT、CAST_TO_NUMBER、CAST_FROM_NUMBER、REVERSE函数功能,提供了RAW数据的转换、操作和比较的能力。
新增DBMS_SESSION系统包,提供了SET_CONTEXT、SET_IDENTIFIER、free_unused_user_memory内置的存储过程,用于管理会话级别的信息。
新增DBMS_XA系统包,提供了一组常量、数据结构和XA_START、XA_END、XA_PREPARE、XA_COMMIT、XA_RECOVER、XA_FORGET、XA_ROLLBACK函数,用于在PL中调用XA接口。
新增DBMS_APPLICATION_INFO系统包,支持SET_CLIENT_INFO、SET_MODULE、SET_ACTION、READ_CLIENT_INFO、READ_MODULE函数,用于注册应用程序的名称和操作,便于审核、性能跟踪以及资源使用情况观测。应用程序的名称和操作信息将记录在V$SESSION、V$SQL和V$SQLAREA视图中。
新增UTL_I18N系统包,支持STRING_TO_RAW和RAW_TO_CHAR函数,可以将RAW类型与VARCHAR2、NVARCHAR2类型数据相互转换。
新增UTL_ENCODE系统包,支持BASE64_ENCODE和BASE64_DECODE函数,将RAW类型数据编码为标准编码格式,便于数据在服务器之间传输。
新增DBMS_CRYPTO系统包,支持HASH、ENCRYPT和DECRYPT函数,用于数据进行加密和解密。支持AES、MD5和DES加解密算法,通过指定HASH_SH256、ENCRYPT_AES128、ENCRYPT_DES、ENCRYPT_3DES、ENCRYPT_3DES_2KEY和HASH_MD5等加密类型进行加解密,满足不同的场景下的安全策略要求。
新增DBMS_DESCRIBE系统包,支持DESCRIBE_PROCEDURE存储过程,用于获取指定用户自定义存储过程的参数描述信息。
新增DBMS_RESOURCE_MANAGER系统包,支持CREATE_CONSUMER_GROUP、CREATE_PLAN、CREATE_PLAN_DIRECTIVE、DELETE_CONSUMER_GROUP、DELETE_PLAN、DELETE_PLAN_DIRECTIVE、SET_CONSUMER_GROUP_MAPPING、UPDATE_PLAN_DIRECTIVE多个函数和存储过程,用于管理数据库资源分配和限制,帮助数据库管理员控制和优化系统资源的使用,以确保不同的用户、任务或应用程序能够在共享资源的环境中高效运行。
DBMS_SQL系统包新增多个子函数,支持OPEN_CURSOR、CLOSE_CURSOR、PARSE、BIND_VARIABLE、BIND_VARIABLE_RAW、BIND_VARIABLE_CHAR、BIND_ARRAY、DEFINE_COLUMN、DEFINE_COLUMN_RAW、DEFINE_COLUMN_CHAR、DEFINE_ARRAY、EXECUTE、FETCH_ROWS、EXECUTE_AND_FETCH、VARIABLE_VALUE、VARIABLE_VALUE_RAW、VARIABLE_VALUE_CHAR、COLUMN_VALUE、COLUMN_VALUE_RAW、COLUMN_VALUE_CHAR、IS_OPEN、TO_REFCURSOR、TO_CURSOR_NUMBER、DESCRIBE_COLUMNS、LAST_ERROR_POSITION和RETURN_RESULT多个子函数和存储过程,以及常量NATIVE和异常INCONSISTENT_TYPE,实现了使用动态SQL解析使用PL的任何数据操作语言(DML)或数据定义语言(DDL)语句的能力,达到了动态地定义查询返回的结果集、执行动态SQL和PL更加简洁和灵活的效果。
DBMS_STATS系统包通过新增CREATE_STAT_TABLE、DROP_STAT_TABLE、EXPORT_TABLE_STATS、IMPORT_TABLE_STATS、EXPORT_COLUMN_STATS、EXPORT_INDEX_STATS、EXPORT_SCHEMA_STATS、IMPORT_INDEX_STATS、IMPORT_COLUMN_STATS、IMPORT_SCHEMA_STATS、CONVERT_RAW_VALUE、COPY_TABLE_STATS、RESET_GLOBAL_PREF_DEFAULTS多个子函数和存储过程,实现了导入导出统计信息和将DBMS_STATS全局选项设置为默认值等功能,方便用于统计信息的备份或者迁移。
DBMS_UTILITY系统包通过新增GET_HASH_VALUE、GET_TIME、FORMAT_ERROR_BACKTRACE、COMMA_TO_TABLE、TABLE_TO_COMMA、ACTIVE_INSTANCES、CURRENT_INSTANCE、DB_VERSION、GET_ENDIANNESS、GET_PARAMETER_VALUE、GET_SQL_HASH、IS_BIT_SET、IS_CLUSTER_DATABASE、NAME_RESOLVE、NAME_TOKENIZE、OLD_CURRENT_SCHEMA、OLD_CURRENT_USER、PORT_STRING等多个子函数和存储过程,达到了方便查看错误堆栈和数据库信息等效果。
DBMS_OUTPUT系统通过新增DISABLE、ENABLE、GET_LINE、GET_LINES、NEW_LINE多个函数和存储过程,支持了设置SERVEROUTPUT将PL/SQL程序中的输出信息写入缓冲区大小和打印到客户端的能力。
UTL_FILE系统包通过新增GET_RAW和PUT_RAW函数,实现在缓存区和文件之间对RAW数据读写的功能。
存储过程能力增强
存储过程/函数支持相互嵌套能力,增强程序的控制能力,提高代码的可读性、可维护性和灵活性。
支持local UDT创建index by功能,允许用户通过二进制整数作为下标直接访问集合类型的数据,避免在插入或访问元素时需要进行扩展(extend)操作的开销,提高了数据检索的效率和便利性。
支持面向对象编程的继承,通过UNDER创建超类型的子类型(subtype、子类型、承类型),子类型会继承超类型(父类型)的属性和方法,并且可以通过OVERRIDING语法重写超类型方法的实现多态特性,简化代码、提高灵活性和可扩展性。
PACKAGE子过程支持递归,通过支持在PACKAGE头部的子过程在非过程声明区的直接或间接递归的功能,提高了代码可读性和维护性,可以减少外部循环和辅助变量。
在v23.3版本之前只实现了EXECUTE ANY TYPE系统级权限UDT权限,该版本支持了EXECUTE、UNDER ON对象级的UDT权限控制,实现了UDT权限的精细化控制和提高了数据库数据安全。
功能优化增强
在替换Oracle业务系统场景中,YashanDB已经具备通过DBLINK连接Oracle数据库能力。并且新增了通过DBLINK支持在YashanDB创建远端对象的同义词、在YashanDB上调用远端存储过程和查看LOB数据等使用场景。
在SQL语法上,增强了外关联运算符(+)功能,覆盖了更多的客户使用习惯和场景。
CTE语法通过基于锚部分的结果进行递归操作,递归部分通过与锚部分UNION ALL等连接,以逐步扩展结果集,直到不再有符合条件的行结束递归,实现递归功能。简化了复杂查询,方便控制递归的层数,避免无限递归的风险。
视图支持更新,通过使用EDITIONABLE和WITH CHECK OPTION关键字创建可更新视图,实现对视图更新其基表的能力,保证数据一致性和完整性,为用户提高可读性和可维护性。
INSERT ON DUPLICATE UPDATE支持VALUES(COLUMN)功能:通过INSERT ON DUPLICATE UPDATE语法新增VALUES(COLUMN)功能,实现在插入冲突时允许引用插入的值的能力,提高了兼容性和灵活性。
新增内置函数
支持OVERLAPS函数,用于判断两个时间段是否有重叠。
支持MEDIAN函数,用于非窗口函数计算,获取一组数据的中位数。
支持PERCENTILE_CONT函数,通过接收一个0到1之间的几率值,并返回与声明了排序的percent_rank函数计算值相等的内插值百分比。
支持DATE_SUB函数,兼容MySQL,用于从日期减去指定的时间间隔。
支持ROWIDTOCHAR函数,将ROWID值转换为VARCHAR字符串格式,以便于输出或进一步操作。
支持LAST_INSERT_ID()函数,通过调用LAST_INSERT_ID()函数,返回上一个有表达式的函数或自增的结果值。
新增执行算子
支持ORDER BY STOPKEY算子,在有序索引上执行的查询、需要分页查询和LIMIT或ROWNUM等查询场景下,通过支持ORDER BY STOPKEY算子对前TOP N个数据的排序,避免对整个结果集进行排序,减少排序开销。
支持BITMAP OR算子,在处理大型数据集存在多个OR条件的查询时,通过支持BITMAP OR算子将BTREE索引扫描使用位图的方式处理数据,提升检索效率。
空间能力增强:GIS支持Box2D类型,支持WKT和WKB格式输出。在丰富空间数据的处理能力的同时满足市场项目的需求。
算子性能提升:
支持算子批量执行能力,同时对聚集、DISTINCT、ORDER BY、GROUP BY、组合算子、HASH JOIN和集合等操作对应的算子进行了优化,在大表1000万和小表100万数据的各种操作的场景下,逐个进行单算子性能测试,相对于v23.2版本提升了约13%的性能。
INSERT语句支持并行执行:在v23.3版本之前,YashanDB的INSERT语句需要通过hint设置并行度支持并行插入能力,该版本支持正常执行INSERT INTO SELECT语句时实现并行插入能力,加快了插入的效率,提升通用性。
# 存储引擎增强
支持CDC接口
通过解析Redo日志,可以捕获数据库中的数据变更操作,包括插入、更新、删除等操作。
提供Java形式的API,可直接解析出按事务顺序组装好的SQL,将YashanDB数据库数据实时同步到下游目标端。
统计信息增强
支持行级别采样功能,提升采样准确率。
支持收集组合索引前导列的DISTINCT(指定最大前导列数),使优化器提升评估代价和选择扫描方式准确性。
支持表空间配额:支持在创建表空间和修改表空间时设置最大最小配额功能,方便空间精细化管理。
主库支持数据库只读状态:通过ALTER DATABASE OPEN READ ONLY语法,支持主库以read only状态打开,不允许任何对数据进行的插入、更新或删除操作。满足灾备演练或灾难恢复、数据分析和验证等场景的诉求。
PROFILE能力增强:PROFILE新增IDLE_TIME和SESSIONS_PER_USER配置,实现限制允许空闲会话的时间和每个用户名所允许的并行会话数的能力,提高了对会话和用户的管理效果,满足更多的安全场景需求。
视图支持COMMENT注释:通过COMMENT ON TABLE/COLUMN语法,实现对视图和视图中的字段添加注释的功能,增加了可读性。
支持创建用户指定TEMP表空间:通过支持TEMPORARY TABLESPACE语法分支,实现在创建用户时指定默认临时表空间,方便了用户操作。
外键引用目标表字段优化:在v23.3版本之前,YashanDB创建外键时,引用必须指定目标表字段,该版本实现指定目标表默认为主键字段,兼容了Oracle语法,提高了灵活性。
支持Share Pool内存自动管理:通过支持dc pool、sql pool、lock pool的不同组件之间动态均衡能力,实现在各种业务场景下内存按需申请和释放,并且使用上对用户透明,提高了易用性。
# 共享集群产品能力
共享集群高可用能力增强,支持主备集群形态部署,满足业务在多地多中心场景的应用以及实践
支持yasboot部署主备集群
支持手动Switchover和备库升主(Failover)的能力
支持最大性能、最大可用和最大保护模式复制
支持对等和非对等规格的数据同步复制
支持最多32个备集群部署
支持透明应用故障转移功能(TAF,Transparent Application Failover)
支持故障转移后select查询语句接续,即FAILOVER_MODE支持select模式,支持在执行查询语句过程中(包括执行和fetch两个过程)如果出现IO异常,执行故障转移并且不报错让业务继续执行。具体使用请查阅JDBC和C驱动的描述。
产品化能力增强
新增支持只读外部表能力:用户可以指定和链接存储系统上的具体CSV文件或者数据目录对象DIRECTORY的文件,实现不用导入数据库中就可以像访问普通表一样访问的能力,降低了数据存储和查询的成本,语法兼容Oracle的使用习惯。当涉及大规模数据处理和分析时,外部表可以直接在存储系统上执行查询,避免了数据传输的开销,在数据量巨大的情况下可以显著提高查询性能。
新增支持物化视图:支持物化视图的创建、修改、删除、全量刷新以及基于物化视图的查询优化、元数据的导入导出和权限控制等功能,同时支持DBMS_MVIEW包提供了一组内置的存储过程,用于物化视图刷新相关操作。
DBLINK能力增强:共享集群产品新增通过DBLINK在YashanDB创建远端对象的同义词、调用远端存储过程、查看LOB数据和SEQUENCE等能力。
新增子查询支持GV视图:解决不同场景下使用GV视图诉求,提升GV使用的便捷性。
新增REDO在线管理:为了灵活方便的对REDO管理和规划,v23.3版本支持在线添加和删除REDO文件。
新增支持XA协议标准:支持跨实例XA事务的启动、挂起、恢复、一阶段提交、二阶段提交、普通回滚、二阶段回滚功能。同时提供GV$GRC_RESOURCE、GV$2PC_PENDING等GV视图方便对XA事务相关信息和状态查询。
新增YCS支持多盘管理:在v23.3.版本之前投票盘和YCR盘等由YCS自己管理,在v23.3版本后将上述盘在YFS统一管理,同时利用YFS冗余能力,提供投票盘,YCR盘数据冗余保证数据的可靠性;新增YFS_DISKSTRING参数来支持YCS盘的自动发现;为了方便版本升级兼容:支持原有裸盘到YFS多副本管理的升级。
新增Recovery Buddy机制:共享集群部分实例故障时,会触发实例故障在线恢复,恢复过程主要分为两个阶段,第一阶段完成共享缓存恢复以及构造恢复集,第二阶段完成页面恢复等逻辑。第一阶段:Master实例通过分析故障实例日志,结合共享缓存信息完成恢复集构造,如故障实例日志量巨大时,此阶段耗时急剧上升。为了解决此场景问题在v23.3版本引入Recovery Buddy机制,通过设定Buddy Instance在数据库运行过程中实时维护Buddy Instance恢复集,当实例发生故障可直接向Buddy 实例获取恢复集,减少扫描故障实例日志,从而大大降低实例恢复RTO指标。提供BUDDY_INSTANCE、BUDDY_INSTANCE_SCAN_INTERVAL、BUDDY_INSTANCE_SCAN_TIMEOUT参数启用和调整Buddy 运行方式更切合业务需要。
性能优化
在ARM架构下,加锁操作会引起CACHE LINE的失效,导致很容易出现跨NUMA节点的内存访问,严重影响并发性能。通过新增参数_SESSION_CACHE_BLOCKS、_SESSION_CACHE_TABLES、_SESSION_BLOCK_CACHE_THRESHOLD,优化block lock和table lock两种锁资源本地化缓存策略,提升读多写多的业务场景性能,同时支持V$SESSION_LOCK_CACHES视图查看每个SESSION的CACHE缓存信息。
在多实例下脏页刷盘对系统运行性能有较大的影响,v23.3版本通过优化实例之间并发刷盘控制机制和提升脏页传输效率,提升了集群下脏页刷盘效率,减小消息风暴。
共享集群IO脑裂保护增强
- YCSM监控进程用于持续监控YCS进程的状态,并在YCS进程异常时及时将其拉起或终止并重启。该进程为独立进程,在YCS进程启动时最先启动,YCS进程退出后退出。
- 共享集群多节点脑裂场景下,提供IO保护能力:新主产生后需要等待原主在途IO写完才能正式升主来避免新主和老主写冲突,以此来避免脑裂处理过程中将并发的YFS、DB将数据写坏。
支持全局资源信息dump能力:在数据库故障问题的跟踪和分析时,通常需要通过分析Block、GCS/GLS等信息帮助问题定位和分析
通过alter system dump datafile命令dump block的全局资源信息、包含buffer内存等信息。
通过dump GCS/GLS资源动作快速获取历史信息,提升了问题定位效率,支持资源历史状态变化追溯能力。
# 分布式产品能力
支持GB18030-2022字符集:列存执行在服务端和客户端的字符集支持设置GB18030,即支持了国家标准所规定的变长多字节字符集,且完全向后兼容GB 2312-1980,及基本兼容GBK。
支持DBLINK能力:分布式产品形态支持通过DBLINK访问Oracle数据库,并且支持数据对象的查询,暂不支持修改操作。
支持内存资源隔离:
通过Resource Manager资源管理器支持会话级和资源使用组级内存管控,避免单个查询内存过大影响整个集群导致集群不可用的场景。
通过增加多个动态视图,支持对当前全局、stage、SQL和算子级别的内存配额使用情况展示,丰富了诊断能力。
支持只读外部表:在AP场景下,分析的数据来源往往是多样化的,并且往往存在大规模数据集,通过支持只读外部表功能,用户可以指定和链接存储系统上的具体CSV文件或者数据目录对象DIRECTORY的文件,实现不用导入数据库中就可以像访问普通表一样访问的能力,避免了数据传输的开销,在数据量巨大的情况下可以显著提高查询性能。
优化内存配额管理:在数据导入场景中,系统自适应调整、限制单个任务的内存上限,均衡单个任务的内存使用量和业务压力,同时提供参数调优和导入任务总数优化,使得系统运行整体效率最优。
支持动态添加目录:分布式产品在v23.3版本之前只支持在原有目录下扩容,该版本支持通过配置bucket的使用策略,实现了可以在多个磁盘/目录下扩容的能力。
支持REDO在线管理:通过在线增加和删除REDO文件,实现REDO文件的灵活管理能力。
支持表空间集设置:分布式产品在v23.3版本之前的表空间集未指定时只能使用USERS表空间且不能修改,该版本支持通过ALTER USER指定默认的表空间集,提升系统灵活性。
增量导入性能优化:通过配置单个导数任务的内存上限,支持按配额申请内存方式,解决大表多channel任务死锁问题,大幅度提升了增量导入性能。
支持密码策略:分布式支持PROFILE功能,通过配置密码策略,提高用户密码的安全性。
运维功能增强:
支持路由视图,易于查看数据分布情况。
支持视图展示CN/DN间的消息等待事件统计,方便获取诊断信息。
支持分布式在线滚动升级,在较多节点情况下,在线滚动升级大大减少运维成本。
# 高可用能力
自选主优化增强:在一主多备场景下,开启自动选举HA_ELECTION_ENABLED功能,通过配置参数ARCHIVE_DEST_*新增DISABLE_ELECTION参数控制指定节点是否参数多数派投票,实现了指定的主备节点参与自动选举和切换的能力,满足不同高可用场景的诉求。
支持自定义配置条件后自动切换:在v23.3版本之前,主备自动故障切换的条件为备库与主库网络异常心跳超时这一种场景。该版本通过新增FAILOVER_HEALTH_CONDITION和FAILOVER_ERROR_CONDITION参数,开启自动选主功能,当主库向客户端抛出某些错误码和某些异常时,包含数据库特定错误码、归档磁盘满,redo刷盘失败等场景,主库立即关闭,备库自动升主,达到基于特定条件实现自动切换的能力,丰富了高可用场景,提高可用性。
支持灾难快速恢复:在v23.3版本之前,yasom在YashanDB集群上只起一个进程且异常挂掉只能手动处理。该版本通过支持yasom一主多备个进程,定时备份同步数据,实现在主进程异常后备快速升主的能力,达到了yasom异常后快速恢复的效果,提高了高可用能力。
支持级联备部署:在v23.3版本之前,YashanDB支持手动配置级联备。该版本通过yasboot新增cascade-node和cascade-parent参数,在一主一备和一主多备的场景下支持快速部署级联备,级联备默认不参与自动选主。提高了易用性。
# 安全能力
支持国密算法:
通过CREATE TABLESPACE和BACKUP语法支持ENCRYPTION USING分支,指定加密算法SM4,实现表空间透明加密(TDE)和备份加密算法满足国密要求。
yaspwd工具通过新增命令行参数PASSWORD_HASH_METHOD为SM3,数据库通过配置隐含参数PASSWORD_HASH_METHOD为SM3,实现口令加密算法满足国密要求。
数据加解密增强:
支持数据动态脱敏:通过DBMS_DATAMASK系统包配置脱敏策略、脱敏对象和脱敏用户,实现对指定表对象的列进行脱敏,支持该列全部脱敏和部分脱敏。
支持表/列级数据加密:通过CREATE/ALTER TABLE支持column_encryption_clause子句功能,实现对指定表或者列的加密,当插入或者更新数据时会被截获、加密,然后用加密的格式保存,被查询时自动解密。加密和解密对用户透明。
PROFILE功能增强
新增FAILED_LOGIN_INTERVAL配置,限制用户因密码错误登录失败后到下一次尝试登需要的时间间隔,可以与现有FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME一起使用,满足用户限制登录间隔的各种场景诉求。
通过PROFILE设置用户连接的IP黑白名单,提高了用户连接的安全性。
# 驱动
为了满足更广的业务场景,YashanDB团队持续丰富驱动类型和新增已支持的驱动功能,优先实现通用的驱动接口能力。
JDBC
支持设置DatabaseMetaData接口返回值,通过设置ProductName返回值为第三方应用软件和YashanDB都兼容的数据库名,使YashanDB可以无需二次开发开始进行连接适配。
支持XA协议标准:通过XA协议来连接同构或异构数据库,在多个节点上执行同一个事务,提供了COMMIT,START,END等原子能力。
支持识别STANDBY角色数据库:只读应用可以配置STANDBY角色数据库连接串,通过JDBC自动连接到备库上,实现应用的读写分离能力。
支持GeoServer:GeoServer是一个常用开源的地理信息服务器,专门用于发布和共享地理空间数据。通过支持适配GeoServer的YashanDB数据源方言包gt-jdbc-yashandb-21.0.1,实现对GeoServer 2.21.x的适配,满足开放标准对多数主要空间数据源进行发布的功能要求。
ODBC:支持32位Windows操作系统,满足更丰富的业务场景。
ADO.NET:支持YasdbCommandBuilder和YasdbDataAdapter类,用于协调DataSet的更改与关联数据库的单表命令和填充DataSet和更新数据源的一组SQL命令和一个数据库连接。
OCI:新增OCIEnvInit、OCIBreak、OCIReset、OCILobOpen、OCILobGetLength2、OCILobClose、OCIInitialize等接口,实现对大型数据的存储和检索的功能。
# 易用性
EXP/IMP增强
支持全部元数据的SQL脚本导入导出,用户可以快速导出SQL文本后进展编辑和处理。
支持按SQL结果集导出,方便按照查询结果正确导出数据到CVS文件,用于中间数据处理。
支持过程与结果展示优化,通过支持导入过程的进度打印、输出导数详情日志,让用户在导数过程中和完成后方便快速知道导数状态,并及时处理。
支持灵活指定分隔符,丰富多种导入导出的CSV分隔格式。
支持指定不同的字符集(GBK、GBK 18030-2022)进行自动转换,提高了工具的易用性。
YASLDR导数增强
支持基于白名单方式容错导入,在v23.3版本之前,YASLDR导入时,遇到报错就会中断退出。在该版本中,通过在导入命令中,设置指定的错误码,实现在导入过程中遇到该错误码时跳过接着进行导入任务。
支持指定数据分隔符、数据包围符号,通过指定不同的单字节字符为分隔符和包围符,支持导入多种数据源的CSV格式,提高了易用性。
支持设置字符集、设置会话级别日期格式,满足不同的字符集和日期格式的数据的导入场景。
新增支持GIS对象导入,方便了客户导入,并提升了导入效率(此版本之前导入较复杂)。
新增支持bit数据类型导出导入,BIT数据类型支持通过EXP导出到CSV文件。
YASRMAN备份增强
备份集有效性检查:通过使用YASRMAN工具,使用VALIDATE BACKUPSET命令对指定的备份集进行检查,实现对CTRL、DATAFILE、REDO、归档等文件备份进行坏块校验,提高了备份的运维能力。
日志优化:当使用YASRMAN操作的时候,会默认打印日志到CATALOG目录下的run.log文件,方便历史操作的溯源。
通过RESTORE DATABASE PLUS ARCHIVELOG UNTIL SCN/TIME语法,指定恢复目标时间和DB ID,实现在PITR时YASRMAN自动使用最近备份集和需要的归档能力,提高了易用性。
通过YASRMAN工具使用LIST BACKUP TAG XXX命令输出备份信息,支持格式化为XML格式,显示备份时间、ASN和SCN等更详细的信息,提高了可读性。
支持segment级别统计信息和V$SEGMENT_STATISTICS视图
YashanDB通过对数据库segment级别的统计信息收集和记录,包含segment上的物理/逻辑读写次数、buffer的等待次数等,这些统计信息被展示在V$SEGMENT_STATISTICS视图中,为DBA诊断问题提供准确的定位信息。
# MySQL兼容
YashanDB自23.3版本开始,新增兼容原生MySQL数据库模式。支持在YashanDB服务进程中启动单独的MySQL监听服务,该服务可打开单独的监听端口,处理通过MySQL协议向YashanDB服务端发起的连接、执行等协议命令。客户端连接到YashanDB服务后,通过执行ALTER SESSION SET COMPAT_VECTOR=MYSQL;语句将语法体系切换为MySQL兼容模式。当会话的语法模式切换为MySQL后,语法解析和执行等将按照MySQL 5.7的风格进行。该版本主要对MySQL常用的数据类型、SQL语句、内置函数和系统视图等功能进行兼容,后续版本将持续提升兼容程度与范围。
协议兼容:兼容MySQL 5.7原生驱动协议,支持MySQL数据库原生常见驱动(例如JDBC驱动)、客户端和工具(例如mysqldump和Navicat)连接到YashanDB数据库进行操作。
数据类型:兼容MySQL 5.7版本大部分数据类型,主要包含BOOL、INT、CHAR、TEXT和BLOB等,具体数据类型的规格详情请查阅MySQL兼容模式参考手册。
语法:支持MySQL 5.7版本中常用的SQL语法,主要包含DML和DDL语法:
DML
SELECT:支持大部分查询功能,包括单表查询、多表查询、子查询、内连接、半连接、外连接、分组及聚合、层次查询等,以及UNION、UNION ALL等集合操作。
INSERT:支持单行、多行插入,同时支持指定分区插入、INSERT INTO SELECT和INSERT ON DUPLICATE KEY UPDATE等常用功能和语法。
UPDATE:支持单列和多列更新,以及使用子查询更新语法功能。
DELETE:支持单表和多表删除,以及使用子查询删除语法功能。
DDL
TABLE:支持创建、删除、修改普通表/分区表的语法功能。
INDEX:支持创建、删除、修改索引的语法功能。
VIEW:支持创建视图的语法功能。
内置函数:支持MySQL 5.7版本的常用内置函数,主要包含数值函数(例如ABS、FLOOR、SQRT)、日期时间函数(例如DATE_ADD、EXTRACT、NOW)、字符函数(例如LPAD、SUBSTR、TRIM)、聚集函数(例如GROUP_CONCAT、MAX、SUM)和条件处理函数(例如IF、IFNULL、NULLIF)等,具体函数列表可以查看视图V$MYSQL_FUNCTION。
系统视图:该版本兼容了如下MySQL常用的系统视图,具体如下:
INFORMATION_SCHEMA视图为系统提供的以INFORMATION_SCHEMA.开头的视图,用于记录MySQL中的元数据信息。
MYSQL视图为系统提供的以MYSQL.开头的视图,用于展现整个数据库与用户权限的相关信息,其中包含了所有用户的对象信息。
# 兼容性变更
# 产品规格
| 规格名称 | 规格类型 | 变更类型 | 描述 | 产品形态 |
|---|---|---|---|---|
| MAX_SESSIONS | 默认值、最大值 | 新增 | YFS支持最大会话数量默认值:1024,取值范围[1024,65535] | 共享集群部署 |
| 系统盘大小 | 最小值 | 新增 | 1G | 共享集群部署 |
| 同一套集群的数据库服务器个数 | 最大值 | 修改 | 由2变更为4 | 共享集群部署 |
| 备集群 | 最大备库数量 | 新增 | 共享集群部署:32(备集群) | 共享集群部署 |
| YCR盘大小 | 最小值 | 删除 | YCR盘由YFS管理,删除此规格 | 共享集群部署 |
| 投票盘大小 | 最小值 | 删除 | 投票盘由YFS管理,删除此规格 | 共享集群部署 |
# 视图&系统表
| 视图名称 | 变更类型 | 描述 | 产品形态 | |
|---|---|---|---|---|
| 1 | DBA_LOGSTDBY_EVENTS | 新增 | 用于记录在redo日志应用到逻辑备用数据库时所发生的故障及其相关信息,仅适用于逻辑备用数据库 | 单机部署 |
| 2 | DBA_SA_COMPARTMENTS | 新增 | 显示所有LBAC安全策略的范围内容信息 | 单机部署 |
| 3 | DBA_SA_LABELS | 新增 | 显示所有LBAC安全标签的信息 | 单机部署 |
| 4 | DBA_SA_LEVELS | 新增 | 显示所有LBAC安全策略的等级内容信息 | 单机部署 |
| 5 | DBA_SA_POLICIES | 新增 | 显示所有的行访问控制的LBAC安全策略信息 | 单机部署 |
| 6 | DBA_SA_TABLE_POLICIES ALL_SA_TABLE_POLICIES | 新增 | 显示所有的表上设置的行访问控制的LBAC安全策略信息 | 单机部署 |
| 7 | DBA_SA_USER_LABELS | 新增 | 显示所有用户的行访问控制的LBAC安全标签信息 | 单机部署 |
| 8 | DBA_YLS_STATUS | 新增 | 显示行访问控制状态信息 | 单机部署 |
| 9 | DBA_YSTREAM_PARAMETERS | 新增 | 显示YStream服务的参数信息 | 单机部署 |
| 10 | DBA_YSTREAM_TABLES | 新增 | 显示YStream服务配置的表和模式的白名单 | 单机部署 |
| 11 | DBA_LSC_COLUMN_COMPRESSION USER_LSC_COLUMN_COMPRESSION ALL_LSC_COLUMN_COMPRESSION | 新增 | 显示所有LSC表(分区)下列数据的压缩信息 | 单机部署、分布式部署 |
| 12 | DBA_LSC_TABLE_COMPRESSION USER_LSC_TABLE_COMPRESSION ALL_LSC_TABLE_COMPRESSION | 新增 | 显示所有LSC表(分区)的压缩信息 | 单机部署、分布式部署 |
| 13 | DBA_ENCRYPTED_COLUMNS USER_ENCRYPTED_COLUMNS ALL_ENCRYPTED_COLUMNS | 新增 | 显示列的加密信息 | 单机部署、共享集群部署、分布式部署 |
| 14 | DBA_RSRC_PLANS | 新增 | 显示数据库中所有资源计划信息 | 单机部署、共享集群部署、分布式部署 |
| 15 | DBA_TS_QUOTAS | 新增 | 显示所有的用户对应的表空间配额,以及配额的使用情况 | 单机部署、共享集群部署、分布式部署 |
| 16 | DBA_UPDATABLE_COLUMNS USER_UPDATABLE_COLUMNS ALL_UPDATABLE_COLUMNS | 新增 | 显示所有列的可操作信息 | 单机部署、共享集群部署、分布式部署 |
| 17 | DV$BULKLOADSTAT V$BULKLOADSTAT | 新增 | 显示列式存储稳态数据导入的汇总内存信息 | 分布式部署 |
| 18 | DV$COLUMNAR_PLAN_QUOTA | 新增 | 显示分布式集群中所有节点向量化计算过程PLAN使用的配额信息 | 分布式部署 |
| 19 | DV$COLUMNAR_QUOTA | 新增 | 显示分布式集群中所有节点向量化计算过程全局使用的配额信息 | 分布式部署 |
| 20 | DV$COLUMNAR_SQL_QUOTA | 新增 | 显示分布式集群中所有节点向量化计算过程SQL使用的配额信息 | 分布式部署 |
| 21 | DV$COLUMNAR_STAGE_QUOTA | 新增 | 显示分布式集群中所有节点向量化计算过程STAGE使用的配额信息 | 分布式部署 |
| 22 | DV$DISKCACHE | 新增 | 显示分布式集群中每个节点上磁盘缓存的状态信息 | 分布式部署 |
| 23 | DV$LSC_SLICE_COLUMN_STAT | 新增 | 显示分布式集群中每个节点上的所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice下每一列的信息 | 分布式部署 |
| 24 | DV$RSRC_CONSUMER_GROUP | 新增 | 显示分布式集群中所有节点资源使用组相关信息 | 分布式部署 |
| 25 | DV$SESSION_SPA | 新增 | 显示分布式集群中所有节点会话使用SPA内存信息 | 分布式部署 |
| 26 | GV$PUB_STAT | 新增 | 显示分布式部署中后台推送任务的统计信息 | 分布式部署 |
| 27 | GV$COLUMNAR_PLAN_QUOTA | 新增 | 显示向量化计算过程PLAN使用的配额信息 | 单机部署、分布式部署 |
| 28 | GV$COLUMNAR_QUOTA | 新增 | 显示向量化计算过程全局使用的配额信息 | 单机部署、分布式部署 |
| 29 | GV$COLUMNAR_SQL_QUOTA | 新增 | 显示向量化计算过程SQL使用的配额信息 | 单机部署、分布式部署 |
| 30 | GV$COLUMNAR_STAGE_QUOTA | 新增 | 显示向量化计算过程STAGE使用的配额信息 | 单机部署、分布式部署 |
| 31 | GV$ELECTION | 新增 | 在HA架构中开启自动选主时,显示当前节点实时的选举状态 关闭自动选主时,为空 | 单机部署、分布式部署 |
| 32 | GV$LSC_SLICE_COLUMN_STAT | 新增 | 单机部署中,显示所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice下每一列的信息 分布式部署中,除CN外,显示当前实例的所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice下每一列的信息;在CN上,显示MN实例的所有LSC表的存储相关统计信息 | 单机部署、分布式部署 |
| 33 | GV$LSC_SLICE_STAT | 新增 | 单机部署中,显示所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice的信息 分布式部署中,除CN外,显示当前实例的所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice的信息;在CN上,显示MN实例的所有LSC表的存储相关统计信息 | 单机部署、分布式部署 |
| 34 | GV$SLICES | 新增 | 单机部署中,以slice为单位显示所有LSC表冷数据的存储相关统计信息 分布式部署中,除CN外,以slice为单位显示当前实例的所有LSC表的存储相关统计信息;在CN上,显示MN实例的所有LSC表冷数据的存储相关统计信息 | 单机部署、分布式部署 |
| 35 | GV$SLICE_REPLICATE_STATS | 新增 | 单机部署中,显示所有本地稳态数据同步情况 分布式部署中,除CN外,显示当前实例的所有本地稳态数据同步情况;在CN上,显示MN实例的所有本地稳态数据同步情况 | 单机部署、分布式部署 |
| 36 | GV$TABLE_STATISTICS_CACHE | 新增 | 显示字典缓存上表的统计信息内容 | 单机部署、共享集群部署、分布式部署 |
| 37 | GV$INDEX_STATISTICS_CACHE | 新增 | 显示字典缓存上索引的统计信息内容 | 单机部署、共享集群部署、分布式部署 |
| 38 | GV$COLUMN_STATISTICS_CACHE | 新增 | 显示字典缓存上列的统计信息内容 | 单机部署、共享集群部署、分布式部署 |
| 39 | GV$SESS_TIME_MODEL | 新增 | 显示各种操作的会话累积时间 | 单机部署、共享集群部署、分布式部署 |
| 40 | GV$INSTANCE_RECOVERY | 新增 | 显示最近一次实例恢复任务的信息 | 单机部署、共享集群部署、分布式部署 |
| 41 | GV$RECOVERY_STATUS | 新增 | 显示日志回放状态的信息 | 单机部署、共享集群部署、分布式部署 |
| 42 | GV$ARCHIVE_GAP | 新增 | 显示归档gap区间 | 单机部署、共享集群部署、分布式部署 |
| 43 | GV$REPLICATION_STATUS | 新增 | 显示集群中所有节点的备机redo传输汇总信息 | 单机部署、共享集群部署、分布式部署 |
| 44 | GV$SEGMENTS | 新增 | 显示所有已经分配的segment信息 | 单机部署、共享集群部署、分布式部署 |
| 45 | GV$TABLESPACE | 新增 | 显示所有表空间的汇总信息 | 单机部署、共享集群部署、分布式部署 |
| 46 | GV$CONTROLFILE | 新增 | 显示当前所有控制文件信息 | 单机部署、共享集群部署、分布式部署 |
| 47 | GV$DATATYPE | 新增 | 显示当前系统提供的所有数据类型信息 | 单机部署、共享集群部署、分布式部署 |
| 48 | GV$ERROR_CODE | 新增 | 显示所有错误码的详细信息 | 单机部署、共享集群部署、分布式部署 |
| 49 | GV$FUNCTION | 新增 | 显示当前系统提供的所有内置函数信息 | 单机部署、共享集群部署、分布式部署 |
| 50 | GV$2PC_PENDING | 新增 | 显示未决事务相关信息及其状态 | 单机部署、共享集群部署、分布式部署 |
| 51 | GV$CM_TASK_INFO | 新增 | 显示CM模块存储的TASK INFO信息 | 单机部署、共享集群部署、分布式部署 |
| 52 | GV$DATA_CONNECTION | 新增 | 显示已创建的会话内连接信息 | 单机部署、共享集群部署、分布式部署 |
| 53 | GV$DIN_LINK | 新增 | 分布式部署中,显示所有节点的内部链路的汇总信息 单机/共享集群部署中,为空 | 单机部署、共享集群部署、分布式部署 |
| 54 | GV$DIN_NODE | 新增 | 分布式部署中,显示所有节点的内部网络链路状态的汇总信息 单机/共享集群部署中,为空 | 单机部署、共享集群部署、分布式部署 |
| 55 | GV$DIN_STAT | 新增 | 分布式部署中,显示所有节点的内部网络统计的汇总信息 单机/共享集群部署中,为空 | 单机部署、共享集群部署、分布式部署 |
| 56 | GV$NODE | 新增 | 显示节点自身的节点信息 | 单机部署、共享集群部署、分布式部署 |
| 57 | GV$RSRC_CONSUMER_GROUP | 新增 | 显示资源使用组相关信息 | 单机部署、共享集群部署、分布式部署 |
| 58 | GV$SEGMENT_STATISTICS | 新增 | 显示segment级别统计信息 | 单机部署、共享集群部署、分布式部署 |
| 59 | GV$SEGSTAT_NAME | 新增 | 显示segment级别统计信息的属性 | 单机部署、共享集群部署、分布式部署 |
| 60 | GV$SESSION_SPA | 新增 | 显示当前所有会话使用SPA内存信息 | 单机部署、共享集群部署、分布式部署 |
| 61 | GV$TASK | 新增 | 显示当前执行和等待的任务信息 | 单机部署、共享集群部署、分布式部署 |
| 62 | GV$USER_QUOTAS | 新增 | 显示所有的用户对应的表空间配额,以及配额的使用情况 | 单机部署、共享集群部署 |
| 63 | V$LOGSTDBY_PROGRESS | 新增 | 显示逻辑备库的回放进度 | 单机部署 |
| 64 | V$YSTREAM_SERVER | 新增 | 显示YSTREAM SERVER的信息 | 单机部署 |
| 65 | V$YSTREAM_STAT | 新增 | 显示YSTREAM SERVER运行的统计信息 | 单机部署 |
| 66 | V$USER_QUOTAS | 新增 | 显示所有的用户对应的表空间配额,以及配额的使用情况 | 单机部署、共享集群部署 |
| 67 | V$ROUTE | 新增 | 分布式部署中,显示当前节点记录的路由分布信息 | 分布式部署 |
| 68 | V$COLUMNAR_PLAN_QUOTA | 新增 | 显示向量化计算过程PLAN使用的配额信息 | 单机部署、分布式部署 |
| 69 | V$COLUMNAR_QUOTA | 新增 | 显示向量化计算过程全局使用的配额信息 | 单机部署、分布式部署 |
| 70 | V$COLUMNAR_SQL_QUOTA | 新增 | 显示向量化计算过程SQL使用的配额信息 | 单机部署、分布式部署 |
| 71 | V$COLUMNAR_STAGE_QUOTA | 新增 | 显示向量化计算过程STAGE使用的配额信息 | 单机部署、分布式部署 |
| 72 | V$LSC_SLICE_COLUMN_STAT | 新增 | 单机部署中,显示所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice下每一列的信息 分布式部署中,除CN外,显示当前实例的所有LSC表的存储相关统计信息,存在分区时,按照分区划分并显示每个slice下每一列的信息;在CN上,显示MN实例的所有LSC表的存储相关统计信息 | 单机部署、分布式部署 |
| 73 | V$RSRC_CONSUMER_GROUP | 新增 | 显示资源使用组相关信息 | 单机部署、共享集群部署、分布式部署 |
| 74 | V$SEGMENT_STATISTICS | 新增 | 显示segment级别统计信息 | 单机部署、共享集群部署、分布式部署 |
| 75 | V$SEGSTAT_NAME | 新增 | 显示segment级别统计信息的属性 | 单机部署、共享集群部署、分布式部署 |
| 76 | V$SESSION_LOCK_CACHES | 新增 | 显示当前所有SESSION LOCK CACHES信息 | 单机部署、共享集群部署、分布式部署 |
| 77 | V$SESSION_SPA | 新增 | 显示当前所有会话使用SPA内存信息 | 单机部署、共享集群部署、分布式部署 |
| 78 | 所有GV$视图 | 修改 | 新增字段GROUP_ID、GROUP_NODE_ID | 单机部署、共享集群部署、分布式部署 |
| 79 | DBA_USERS USER_USERS ALL_USERS | 修改 | 新增TEMPORARY_TABLESPACE字段:表示默认临时表空间 新增LOCAL_TEMP_TABLESPACE字段:表示默认本地临时表空间 新增DEFAULT_TABLESPACE_SET字段:表示默认表空间集(仅在分布式部署中有意义,其他部署形态中该值恒为NULL) | 单机部署、共享集群部署、分布式部署 |
| 80 | DBA_BACKUP_SET | 修改 | 新增字段字段:表示当前备份集的唯一身份标识 | 单机部署、共享集群部署、分布式部署 |
| 81 | DBA_IND_STATISTICS USER_IND_STATISTICS ALL_IND_STATISTICS | 修改 | 新增DISTINCT_2KEYS字段:表示组合索引前两列的唯一值数量 新增DISTINCT_3KEYS字段:表示组合索引前三列的唯一值数量 新增DISTINCT_4KEYS字段:表示组合索引前四列的唯一值数量 | 单机部署、共享集群部署、分布式部署 |
| 82 | DBA_RSRC_PLAN_DIRECTIVES | 修改 | 新增SPA_LIMIT字段:表示资源使用组占用用户内存的上限比例 新增SPA_LIMIT_RESERVED字段:表示资源使用组内用户内存预留一定比例作为各会话私有部分 新增SESSION_SPA_LIMIT字段:表示会话占用资源组可用内存的上限比例 新增EXECUTION_QUEUE_TIMEOUT字段:表示内存分配不足时在队列中等待的超时时间 | 单机部署、共享集群部署、分布式部署 |
| 83 | DBA_VIEWS USER_VIEWS ALL_VIEWS | 修改 | 新增READ_ONLY字段:表示视图是否只读 | 单机部署、共享集群部署、分布式部署 |
| 84 | UNIFIED_AUDIT_TRAIL | 修改 | 新增TRANSACTION_ID字段:表示事务ID 新增ROLE字段:表示登录用户角色类型 | 单机部署、共享集群部署、分布式部署 |
| 85 | DV$ELECTION GV$ELECTION V$ELECTION | 修改 | 新增EXTEND_INFO字段:表示组内所有节点的补充信息 | 单机部署、共享集群部署、分布式部署 |
| 86 | DV$SESSION GV$SESSION V$SESSION | 修改 | 新增SPA_USE_MEM字段:表示会话当前使用SPA内存大小(单位:字节) 新增SPA_USE_QUOTA字段:表示会话当前占有的配额(单位:字节) 新增SPA_MAX_USE_MEM字段:表示会话最大使用SPA内存大小(单位:字节) 新增RESOURCE_CONSUMER_GROUP字段:表示会话所属的资源组 新增AUDSID字段:表示审计会话ID 新增CLIENT_INFO字段:表示客户端信息,由调用DBMS_APPLICATION_INFO.SET_CLIENT_INFO过程设置所得 新增MODULE字段:表示当前执行模块的名称,由调用DBMS_APPLICATION_INFO.SET_MODULE过程设置所得 新增MODULE_HASH字段:表示MODULE列的HASH值 新增ACTION字段:表示当前正在执行的操作的名称,由调用DBMS_APPLICATION_INFO包中的相关过程设置所得 新增ACTION_HASH字段:表示ACTION列的HASH值 | 单机部署、共享集群部署、分布式部署 |
| 87 | DV$LSC_SLICE_STAT | 修改 | 新增ORIGINAL_SIZE字段:表示slice对应的原始写入数据大小 | 分布式部署 |
| 88 | DV$DIN_LINK V$DIN_LINK | 修改 | 新增SEND_QUEUE_SIZE字段:表示TCP发送缓冲区使用大小(单位:字节),默认最大2M 新增RECV_QUEUE_SIZE字段:表示TCP接收缓冲区使用大小(单位:字节),默认最大2M 新增RESPONSE_TIME字段:表示链路响应速度(单位:毫秒) 新增THROUGHPUT字段:表示链路吞吐量(单位:字节每分钟) | 分布式部署 |
| 89 | DV$DIN_NODE V$DIN_NODE | 修改 | 新增THROUGHPUT字段:表示节点吞吐量(单位:字节每分钟) 新增CONTROL_SEND_TIMEOUT_CNT字段:表示本地到对端节点间控制通道发送超时累计次数新 增CONTROL_RECV_TIMEOUT_CNT字段:表示本地到对端节点间控制通道接收超时累计次数 新增DATA_SEND_TIMEOUT_CNT字段:表示本地到对端节点间数据通道发送超时累计次数 新增DATA_RECV_TIMEOUT_CNT字段:表示本地到对端节点间数据通道接收超时累计次数 | 分布式部署 |
| 90 | DV$DIN_STAT V$DIN_STAT | 修改 | 新增CONTROL_SEND_TIMEOUT_CNT字段:表示从节点拉起到目前为止控制通道发送超时累计次数 新增CONTROL_RECV_TIMEOUT_CNT字段:表示从节点拉起到目前为止控制通道接收超时累计次数 新增DATA_SEND_TIMEOUT_CNT字段:表示从节点拉起到目前为止数据通道发送超时累计次数 新增DATA_RECV_TIMEOUT_CNT字段:表示从节点拉起到目前为止数据通道接收超时累计次数 | 分布式部署 |
| 91 | DV$DATAFILE V$DATAFILE | 修改 | 新增SHADOW字段:表示目标临时文件是否为影子状态 | 单机部署、共享集群部署、分布式部署 |
| 92 | DV$TRANSACTION GV$TRANSACTION V$TRANSACTION | 修改 | 新增PRV_XID字段:表示前事务ID,正常为空,若本事务为自治事务时,该字段为前一个事务ID | 单机部署、共享集群部署、分布式部署 |
| 93 | DV$ARCHIVE_DEST V$ARCHIVE_DEST GV$ARCHIVE_DEST | 修改 | 新增DISABLE_ELECTION字段:表示标记该链路指向的节点是否参与主备集群的自动选主或者投票 | 单机部署、共享集群部署、分布式部署 |
| 94 | DV$DATABASE V$DATABASE GV$DATABASE | 修改 | 新增GUARD_STATUS字段:表示保护数据不被更改 | 单机部署、共享集群部署、分布式部署 |
| 95 | DV$LOGFILE GV$LOGFILE V$LOGFILE | 修改 | 新增TYPE字段:表示redo文件的类型 | 单机部署、共享集群部署、分布式部署 |
| 96 | DV$REPLICATION_STATUS GV$REPLICATION_STATUS V$REPLICATION_STATUS | 修改 | 新增PEER_NODE_ID字段:表示对端数据库的NODEID | 单机部署、共享集群部署、分布式部署 |
| 97 | GV$YFS_FILE | 修改 | 新增TYPE字段:表示文件类型编号,200以上为元数据类型,类型编号由DB指定 | 共享集群部署 |
| 98 | GV$YFS_DISKGROUP V$YFS_DISKGROUP | 修改 | 新增TYPE字段:表示磁盘类型 新增STATE字段:表示磁盘状态 | 共享集群部署 |
| 99 | GV$GRC_RESOURCE V$GRC_RESOURCE | 修改 | 新增DISK_LSN字段:表示最近一次刷盘的LSN 新增WRITE_INST字段:表示正在刷盘的实例ID TYPE字段新增值2:GTID,表示资源类型 | 共享集群部署 |
| 100 | GV$BUFFER_CONTROL V$BUFFER_CONTROL | 修改 | 新增TRUNC_BID字段:表示redo块号 新增RES_ROLE字段:表示集群下buffer页面的资源角色 新增WRITE_INST字段:表示当前正在将该页面刷盘的实例ID | 单机部署、共享集群部署、分布式部署 |
| 101 | GV$INSTANCE V$INSTANCE | 修改 | 新增IGNORE_OPEN字段:表示实例是否忽略了OPEN启动参数,实际以NOMOUNT模式启动 该字段仅在共享集群主备部署下有意义,仅在备集群非MASTER实例,以OPEN模式启动时为TRUE | 单机部署、共享集群部署、分布式部署 |
| 102 | GV$DISKCACHE V$DISKCACHE | 修改 | 新增REGION_LOAD_TIMESTAMP字段:表示磁盘缓存区域开始加载时间戳 | 单机部署、共享集群部署、分布式部署 |
| 103 | GV$SESSION | 修改 | 新增GLOBAL_SESSION_ID字段:表示全局会话ID | 单机部署、共享集群部署、分布式部署 |
| 104 | GV$SESSION_EVENT | 修改 | 新增GLOBAL_SESSION_ID字段:表示全局会话ID | 单机部署、共享集群部署、分布式部署 |
| 105 | GV$SHARE_POOL V$SHARE_POOL | 修改 | 新增MEMORY_INIT_TYPE字段:表示初始化内存池的方式 新增MEMORY_MANAGE_TYPE字段:表示内存管理方式 新增MEMORY_REQUEST_COUNT字段:表示内存池动态申请内存的次数 新增MEMORY_REQUEST_SZIE字段:表示内存池动态申请内存的大小(单位:字节) 新增MEMORY_FREE_COUNT字段:表示内存池动态释放内存的次数 新增MEMORY_FREE_SIZE字段:表示内存池动态释放内存的大小(单位:字节) | 单机部署、共享集群部署、分布式部署 |
| 106 | V$LSC_SLICE_STAT | 修改 | 新增DATA_SIZE字段:表示slice经过编码压缩后的最终数据大小(不包括元数据大小),非stable slice该字段为NULL | 单机部署、分布式部署 |
| 107 | V$SESSION | 修改 | 新增SQL_COMPAT_MODE字段:表示当前会话正在执行的SQL的兼容模式 新增SQL_COMPAT_ATTRS字段:表示当前会话正在执行的SQL的兼容模式属性 新增SCHEMA#字段:表示当前会话的schema ID 新增CLIENT_IDENTIFIER字段:表示当前会话的客户端标识符 | 单机部署、共享集群部署、分布式部署 |
| 108 | V$SQL | 修改 | 新增COMPAT_MODE字段:表示当前SQL的兼容模式 新增COMPAT_ATTRS字段:表示当前SQL的兼容模式属性 | 单机部署、共享集群部署、分布式部署 |
# 系统参数
| 配置参数 | 修改类型 | 描述 | 产品形态 |
|---|---|---|---|
| STREAM_POOL_SIZE | 新增 | 用于指定YStream的内存池大小 | 单机部署 |
| TLCP_CACERT_FILE | 新增 | 用于指定CA证书的路径 | 单机部署 |
| TLCP_CERT_FILE | 新增 | 用于指定证书的路径 | 单机部署 |
| TLCP_ENCKEY_FILE | 新增 | 用于指定加密证书的路径 | 单机部署 |
| TLCP_PASS_FILE | 新增 | 用于指定密码配置文件路径 | 单机部署 |
| TLCP_SIGNKEY_FILE | 新增 | 用于指定签名证书的路径 | 单机部署 |
| UKEY_AUDIT_ADMIN_PUBLIC_KEY_FILE | 新增 | 用于指定UKEY认证的AUDIT_ADMIN公钥文件路径 | 单机部署 |
| UKEY_DBA_PUBLIC_KEY_FILE | 新增 | 用于指定UKEY认证的DBA公钥文件路径 | 单机部署 |
| UKEY_SECURITY_ADMIN_PUBLIC_KEY_FILE | 新增 | 用于指定UKEY认证的SECURITY_ADMIN公钥文件路径 | 单机部署 |
| COMPAT_VECTOR | 新增 | 用于当前会话的语法兼容模式,不能通过ALTER SYSTEM SET语句设置 | 单机部署 |
| NO_ZERO_DATE | 新增 | 用于控制是否拦截将'0000-00-00'作为有效日期进行插入,TRUE表示拦截(即不将'0000-00-00'作为有效日期进行插入) | 单机部署 |
| NO_ZERO_IN_DATE | 新增 | 用于控制若日期中年度、月份或日期为0是否需要拦截,TRUE表示拦截(即日期中年度、月份或日期为0时不允许作为有效值) | 单机部署 |
| YFS_DISKSTRING | 新增 | 表示YFS启动时扫描该路径下磁盘,构建diskgroup信息 | 共享集群部署 |
| YCR_FILE_NAME | 新增 | 表示配置ycr file名称 | 共享集群部署 |
| VOTING_FILE_NAME | 新增 | 表示配置voting disk文件名称 | 共享集群部署 |
| BUDDY_INSTANCE | 新增 | 表示指定当前实例维护伙伴实例redo的个数 | 共享集群部署 |
| BUDDY_INSTANCE_SCAN_INTERVAL | 新增 | 表示指定触发所有实例读取伙伴实例的redo,从恢复点到当前redo日志刷盘点的redo大小间隔,单位为字节 | 共享集群部署 |
| BUDDY_INSTANCE_SCAN_TIMEOUT | 新增 | 表示指定触发所有实例读取伙伴实例redo的时间间隔 | 共享集群部署 |
| DISKCACHE_ROOT | 新增 | 用于磁盘缓存根目录,必须指定为?/cache下的空文件夹或暂未创建的文件夹 | 共享集群部署 |
| DISKCACHE_CAPACITY | 新增 | 用于磁盘缓存最大占用空间(单位:字节) | 共享集群部署 |
| SYS_AREA_SIZE | 修改 | 参数有重启生效改为立即生效 | 共享集群部署 |
| SECURE_FILE_PRIV | 新增 | 用于指定部分功能的安全目录,未指定或指定为空串时相应功能不可用,安全目录的使用场景如下: * 调用UTL_FILE高级包读/写文件 * 通过yasql工具执行LOAD DATA语句导入文件 | 单机部署、共享集群部署 |
| DML_PARALLEL | 新增 | 用于指定是否允许DML并行执行 | 单机部署、共享集群部署、分布式部署 |
| ENCRYPT_ENGINE_TYPE | 新增 | 用于指定加密引擎的类型 | 单机部署、共享集群部署、分布式部署 |
| ENCRYPT_TYPE | 新增 | 用于指定加密类型 | 单机部署、共享集群部署、分布式部署 |
| SMM_ENABLE | 新增 | 用于指定开机是否做安全函数自测 | 单机部署、共享集群部署、分布式部署 |
| EMPTY_STRING_AS_NULL | 新增 | 用于长度为0的字符串是否当作NULL处理,参数值默认为TRUE | 单机部署、共享集群部署、分布式部署 |
| DIN_SSL_ENABLE | 新增 | 用于指定分布式节点内部网络通信链路是否打开SSL加密 | 分布式部署 |
| FAILOVER_ERROR_CONDITION | 新增 | 用于指定主库因抛出错误码而触发条件故障切换的条件,错误码格式可以为“数据库错误码”或“数据库错误码-系统错误码”,“数据库错误码”和“系统错误码”均为数字,多组错误码之间用,隔开,最多可以设置16组错误码当采用“数据库错误码-系统错误码”格式时,需同时触发两个错误码才会达成Failover的条件。开启自动选主的情况下,主库触发任一指定条件后会立即关闭(终止YASDB进程) 该配置仅在当前数据库生效,不会同步给备库 | 单机部署、分布式部署 |
| FAILOVER_HEALTH_CONDITION | 新增 | 用于指定主库触发条件故障切换的条件,最多可以设置6个条件 开启自动选主的情况下,主库触发任一指定条件后会立即关闭(终止YASDB进程) 该配置仅在当前数据库生效,不会同步给备库 各项条件的含义如下: * CORRUPTED_CONTROLFILE:表示主库写控制文件失败 * INACCESSIBLE_LOGFILE:表示主库写redo文件失败 * STUCK_ARCHIVER:表示主库因磁盘满导致归档失败 * DATAFILE_WRITE_ERRORS:表示主库写脏页失败 * DATAFILE_NO_SPACE:表示主库因磁盘满导致创建或写入数据文件失败 * SLICE_NO_SPACE:表示主库因磁盘满导致创建或写入slice文件失败 | 单机部署、分布式部署 |
| LSC_MCOL_ENABLED | 新增 | 指定LSC表是否开启MCOL能力,LSC的MCOL模块可提供更强大的事务能力 若使用场景中没有较高的事务需求,可关闭此模块以获取更好的插入及扫描性能 | 单机部署、分布式部署 |
| BULKLOAD_MAX_MEM_PERCENT | 新增 | 用于指定进行BULKLOAD导入时,所有导入任务使用的物化内存占COLUMNAR_VM_BUFFER_SIZE的上限百分比 | 单机部署、分布式部署 |
| SESSION_BULKLOAD_MAX_MEM_PERCENT | 新增 | 用于指定进行BULKLOAD导入时,单个导入任务使用的物化内存占BULKLOAD_MAX_MEM_PERCENT的上限百分比 | 单机部署、分布式部署 |
| RESOURCE_MANAGER_PLAN | 新增 | 用于指定活动资源计划 | 单机部署、分布式部署 |
| AUTO_START | 修改 | 修改该参数由只读参数变更为可修改参数 | 共享集群部署 |
| RESTART_TIMES | 修改 | 修改该参数由只读参数变更为可修改参数 | 共享集群部署 |
| RESTART_INTERVAL | 修改 | 修改该参数由只读参数变更为可修改参数 | 共享集群部署 |
| WAIT_STOP_FIN_TIME | 修改 | 修改该参数由只读参数变更为可修改参数 | 共享集群部署 |
| RECY_INTERVAL | 修改 | 修改该参数默认值由2592000变更为0 | 共享集群部署 |
| PARSER_STACK_SIZE | 修改 | 修改该参数默认值由1M变更为8M | 共享集群部署 |
| RECY_INTERVAL(集群文件系统配置) | 修改 | 修改该参数默认值259200修变更为0 | 共享集群部署 |
| CHECKPOINT_INTERVAL | 修改 | 修改该参数默认值由100000变更为128M | 单机部署、共享集群部署、分布式部署 |
| MAX_PARALLEL_WORKERS | 修改 | 修改该参数取值范围由[1,4096]变更为 | 单机部署、共享集群部署、分布式部署 |
| MAX_SESSIONS | 修改AUTO_START | 修改该参数取值范围由[96,16384]变更为[64 + MAX_PARALLEL_WORKERS,16384] | 单机部署、共享集群部署、分布式部署 |
| ENABLE_ARCH_DATA_IGNORE_BACKUP | 废弃 | 从v23.3版本起,该系统参数被废弃 | 单机部署、共享集群部署、分布式部署 |
| YCR_DISK | 废弃 | 从v23.3版本起,该系统参数被废弃 | 共享集群部署 |
| BOOT_DISK | 废弃 | 从v23.3版本起,该系统参数被废弃 | 共享集群部署 |
# 升级说明
| 产品形态 | 升级说明 | 升级方式 |
|---|---|---|
| 单机部署 | 支持从v22.2版本升级到v23.3版本 支持从v23.1版本升级到v23.3版本 支持从v23.2版本升级到v23.3版本 | 离线升级 |
| 分布式部署 | 支持从v23.1版本升级到v23.3版本 支持从v23.2版本升级到v23.3版本 | 离线升级 |
| 共享集群部署 | 支持从v23.1版本升级到v23.3版本 支持从v23.2版本升级到v23.3版本 | 离线升级 |
# 周边配套
YashanDB数据库 v23.2版本推荐使用的平台工具版本如下:
| 组件 | 配套版本 |
|---|---|
| Yashandb JDBC 驱动程序(JDBC) | 1.8.0 |
| Yashandb ODBC 驱动程序(ODBC) | 23.3.1.100 |
| Yashandb C 驱动程序(C) | 23.3.1.100 |
| Yashandb C# 驱动程序(ADO.NET) | 1.6.0 |
| Yashandb Python 驱动程序(Python) | 1.1.0 |
| YashanDB 客户端(yasql) | 23.3.1.100 |
| YashanDB 监控运维工具(YCM) | 23.3.1.0 |
| YashanDB 迁移平台工具 (YMP) | 23.3.1.0 |
| YashanDB 开发者工具 | 23.3.1.0 |
# 性能测试
# YashanDB数据库共享集群部署的TPC-C性能测试
# 硬件环境
| CPU规格 | 操作系统 | 内存大小 | 数量 | 用途 |
|---|---|---|---|---|
| Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (vcpu 128) | CentOS Linux release 7.6 | 755G | 4台 | 数据库服务端 |
| Intel(R) Xeon(R) Gold 5320 CPU @ 2.20GHz (vcpu 128) | CentOS Linux release 7.6 | 377G | 2台 | 客户端 |
| Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (vcpu 128) | CentOS Linux release 7.6 | 377G | 2台 | 客户端 |
# 存储配置
| 配置类别 | 配置信息 |
|---|---|
| 设备类型 | 全闪存存储阵列 |
| 设备型号 | Lenovo DE6600H |
| 详细参数 | 硬盘:8块1.9TB 2.5英寸NVMe盘 端口:25GE 缓存容量:256GB缓存 |
| 数量 | 硬盘数量:3块 (容量5TB) |
# 数据库参数配置
UNDO_RETENTION=15
VM_BUFFER_SIZE=50G
_DATA_BUFFER_PARTS=8
_WAIT_BOC=FALSE
REDO_BUFFER_PARTS=8
LARGE_POOL_SIZE=2G
LOCK_POOL_SIZE=3G
SHARE_POOL_SIZE=30G
UNDO_SHRINK_ENABLED=FALSE
WORK_AREA_POOL_SIZE=5G
CHECKPOINT_INTERVAL=300G
CLUSTER_DATABASE=TRUE
DBWR_COUNT=8
REDO_BUFFER_SIZE=64M
_REPLICATION_BUFFER_SIZE=128M
_SESSION_RESERVED_CURSORS=64
GRC_TASK_COUNT=16
MAX_SESSIONS=8192
RECOVERY_PARALLELISM=128
SQL_POOL_PARTS=8
_UNDO_MAX_AUTOEXTEND_SEGMENTS=256
DBWR_BUFFER_SIZE=32M
GCS_TASK_COUNT=32
INTERCONNECT_LINKS=16
VM_BUFFER_PARTS=8
CHECKPOINT_TIMEOUT=1000000000
DATA_BUFFER_SIZE=300G
GLS_TASK_COUNT=16
WORK_AREA_HEAP_SIZE=2M
# BenchmarkSql参数配置
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
# 测试结果
YashanDB数据库v23.3版本共享集群4节点部署在CentOS系统上性能稳定,tpmC (NewOrders)值为521.5W。
| 平台 | 仓数 | 并发数 | 测试时长 | tpmC (NewOrders) |
|---|---|---|---|---|
| X86 | 3000 | 2400 | 10分钟 | 521.5W |
# 版本约束
| 约束项 | 产品形态 | |
|---|---|---|
| 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$sqlstat/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字节 | 单机部署、共享集群部署、分布式部署 |