GaussDB的内核8.x版本更新说明
8.x版本
本章节介绍云数据库 GaussDB的内核8.x版本更新说明。版本号说明、版本映射关系以及如何查看版本号请参考数据库引擎版本说明。
表1 8.102.0版本更新说明
时间
需求名称
描述
2024.4
O兼容性支持聚集相关语法、基于视图和子查询更新表以及比较符号空格
支持聚集函数和order by同时使用。
支持嵌套聚集函数。
子查询和视图支持插入、更新和删除表操作。
支持表达式“> =”或“<=”之间存在空格。
O兼容性新增支持系统函数和系统视图
在现有O兼容性能力基础上,增加了对部分系统函数和系统视图的支持,主要包括:
兼容两种窗口函数语法。
兼容函数sys_guid。
时间函数兼容性提升,能够获取当前实时时间,而不是事务开始时间。
支持数据排序函数array_sort。
兼容查询SQL语法from dual。
补齐all_directories 视图。
bulk collect配合execute支持。
分布式agg相关语法支持。
支持=>行构造语法。
支持EXTRACTVALUE 系统函数。
O兼容性支持编码异常及混合编码特殊字符
新增GBK扩展字符集zhs16gbk,同时支持jdbc设置client_encoding = zhs16gbk和数据库set client_encoding = zhs16gbk 。
针对新增字符集zhs16gbk,提供转码函数,转换关系包括:zhs16gbk转UTF8, UTF8转zhs16gbk,GB18030转zhs16gbk(欧元符号),zhs16gbk(欧元符号)转GB18030。
在JDBC驱动提供转码函数,解决扩展字符集zhs16gbk的转码问题。
为保证包含特殊字符的客户数据能够正常导入导出进数据库,导入导出工具在同编码的情况下支持:
\copy to 导出为二进制文件文件,导出过程不做转码和校验,二进制文件头带原编码信息;
使用 gsloader 或者 \copy from 导入该二进制文件,导入过程不做转码和校验。
增加输出开关,保证查询时强制编码不报错,输出为占位符。
O兼容性存储过程支持同义词/subtype/动态匿名块/trigger商用能力增强
在O兼容性方面,新增以下内容:
trigger支持create or replace 语法,支持匿名块语法。
动态语句匿名块增强。
存储过程支持subtype相关语法。
同义词增强。
O兼容性支持整型跨类型比较和bpchar模糊匹配及系统函数匹配策略优化
在O兼容模式下:
添加整型类别(int1/int2/int4/int8/int16/numeric)的跨类型的索引操作符类。
增加 bpchar vs bpchar 模糊匹配的索引操作符类。
优化系统函数内部匹配策略。
O兼容性新增支持XMLGEN、STATS和DESCRIBE高级包功能
在O兼容性模式下,DBMS_XMLGEN、DBMS_STATS和DBMS_DESCRIBE高级包中新增支持部分接口。
M兼容性支持数据类型及语法函数等商用需求
新增数据类型兼容:支持year数据类型,支持integer(p)显示宽度。
新增DDL语法兼容:支持删除表的主键和外键约束语法,更改表名语法兼容,增加子分区语法兼容,自增列支持分布式,create table like 语法兼容,create table 语法上兼容 MySQL数据库 ENGINE=InnoDB 语法。
新增DML语法兼容:insert支持ignore关键字忽略特定场景错误,load data 导入数据功能。
新增操作符与表达式兼容:新增set names语法控制LIKE匹配时使用的字符集和字符序,支持source REGEXP pattern, 正则匹配操作符,判断source源串是否匹配模式串pattern,匹配的规则与GaussDB已有的 ~* 操作符基本功能一致,个别场景有差异。
新增支持反引号:支持反引号引用的数据库对象名,区分大小写。
新增支持字符序:新增支持utf8_bin、utf8_general_ci、utf8mb4_0900_ai_ci三种字符序。
新增字符串处理函数:新增支持strcmp(), log10(), log2(), bin(), elt(), field(), insert(), locate(), make_set(), quote(), space(), default() 系统函数。
M兼容性支持新框架和协议兼容商用
M兼容性新框架,支撑未来完全兼容MySQL数据库语法能力,避免老框架中语法、关键字占用等语法隔离和前向兼容能力,函数操作符行为同MySQL数据库一致,支持MySQL数据库协议等。
M兼容性已有语法适配新框架支持商用
M兼容性新框架通过HOOK机制,将兼容性功能在独立扩展中实现,同GaussDB主流程进行隔离,避免侵入式修改引入的前向兼容问题。此特性将现有107条语法支持同步到新框架上。
JDBC驱动支持流式读能力
GaussDB JDBC驱动支持流式读能力,流式读情况下,JDBC不产生OOM。
JDBC驱动支持JDK1.7以及JDBC运维能力增强
JDBC内存释放优化,避免异常连接场景下客户端内存溢出。
通过JDBC驱动主动检测客户端和数据库侧相关指标数据,为数据库问题定界提供指标数据。
JDBC适配JDK1.7。
支持executeUpdate执行DQL语句,并获取查询结果。
开箱出口商用性能不低于100w tpmC
对GaussDB在默认出口参数场景下的性能进行优化,以标准benchmark(TPCC)度量集中式出口参数性能值提升至不低于100w tpmC,同时增加性能毛刺定位能力。
基于adio面向大容量典型场景性能提升20%
针对大容量场景,通过aio-dio技术和去双写功能充分利用IO资源,以达到提升数据库性能的目的,提升20%以上,同时,提供从BIO模式到ADIO模式的在线切换能力。
集中式大并发写事务性能提升50%
优化大并发下基础写事务的性能,包括插入,带索引更新,不带索引更新。
优化大并发下多读少写,存在热点页面场景的性能。
基于存储过程面向跑批典型场景性能优化15%
存储过程性能底噪优化,支持SQLBYPASS。
支持游标并发查询针对典型场景性能提升30%以上
支持对游标进行并发查询的能力,提升游标的使用效率,提升ustore下insert select并行性能。
基于窗口函数针对翻页典型场景性能提升6倍
基于窗口函数的翻页查询特征是子查询的投影列中带有窗口函数,父查询中带有对该窗口函数的过滤条件,本特性支持把外层的过滤条件下推到内层的子查询上。
Codegen商用支持TPCH重表达式计算典型查询性能提升20%
Codegen商用能力提升,实现Codegen默认开启,解决复杂查询表达式计算性能问题。
支持谓词索引并行扫描在典型场景性能超越PG16 10%
支持带谓词的索引并行扫描(IndexScan和IndexOnlyscan),实现典型场景性能提升。
支持Astore分区间离线并行创建Local Partitioned Index
支持分区间并行,将构建Local Partitioned Index过程中扫描,排序,插入B树等步骤完全并行化,(分区数据分布均衡时)整体性能优于当前分区内并行创建方案。
SPM计划管理支持复杂SQL还原
在SPM支持计划管理功能基础上进行如下增强:
outline支持SMP计划的物理算子控制。
outline支持控制any子链接提升的subplan。
支持对semi join的控制。
SPM outline下超过12表连接hint生效,并能快速还原该计划。
容灾针对典型场景支持99%切换稳定性保障5分钟业务恢复
针对容灾的典型场景进行内部实现机制和性能优化,有效提升了容灾切换的性能和稳定性。
急诊室动脉亚健康检测模型首商用支持慢盘检测
通过构建动脉亚健康检测模型,突破识别动脉亚健康问题,给出对应的措施,提升数据库高可用能力。
客户端socketTimeout服务端语句终止执行
当客户端超时断连后,GaussDB服务端可以及时感知,并且终止该连接对应的、正在运行的业务语句。避免因业务侧socketTimeout超时重试,导致会话资源积压、业务受损。
基于物理坏块自动修复支持秒级主机修复备机页面
主备场景部署模式下,若备机目标类型页面(数据页/索引页/Undo slot页面/Undo页面)发生物理损坏,即CRC不匹配,在备机回放过程中读取到该页面时可以通过主机拉取目标页面,若主机页面正确,可以覆盖写备机执行自动修复。
保证备机回放不中断,业务不感知,无需使用备份恢复或者全量build。
通过页面CRC检测出页面物理页面损坏时,能够自动触发主机修复备机,且该功能默认开启。
完善相关DFX,例如页面损坏后的日志打印以及页面解析,系统函数针对坏块的查询。
PITR模块化解耦及关键场景定位定界能力提升
支持barrier文件启动修复。
归档日志清理从内核侧转移到gs_roach侧,去除日志清理的逻辑对gaussdb内核的影响。
新增若干系统函数,用于查询和操作归档相关文件。
list/range自动扩展分区商用支持
支持创建/使用自动扩展分区表,当插入数据无法match任一已有分区时,会自动创建一个新分区。集中式采用自治事务提交。
支持创建分类索引时触发该行为,支持在线开启/关闭自动扩展分区能力。
行存压缩支持页面级LMT
在开启高级压缩特性并对表指定ILM策略后,会定时拉起后台调度扫描所有行,对数据执行freeze动作后,将当前时间戳作为frozen tuple的最后修改时间来判定冷热数据。由于这个时间戳信息与tuple实际的最后修改时间存在一定差距,为了更准确地表示LMT,采用tuple所在page的LSN对应的时间戳来表示tuple的LMT,以此作为冷热判定的时间依据。
基于存储过程面向大并发典型场景全局编译内存占用率降低30%
大并发场景下,存储过程占用内存较多,需要对一些不合理的内存占用进行优化,主要是指一些跟参数个数相关的结构体数组,或者将一些内存进行共享,主要是指存储过程的变量的类型描述,来降低内存占用,提升数据库并发扩展能力。
针对4U16G小规格典型场景集群管理组件CPU底噪降低2.75%且内存占用率降低46%
面向4U16G小规模,集群管理组件CPU和内存优化。
Ustore支持柔性字段高效存储
Enhanced Toast是一种用于处理超大字段技术,减少了Toast Pointer中冗余信息存储提升单表超长列数,优化主表与线外存储表之间的映射关系,无需通过pg_toast_index来存储主表数据与线外存储表数据的关系,降低用户存储空间。Enhanced Toast使分割后的数据具备自链接能力排除了原有chunk id分配流程的依赖解决极大提升了写入性能。
Ustore支持Toast规模商用
支持reindex、reindex concurrently、vacuum full、merge、split操作对toast表索引升级为ubtree。
支持gs_parse_page_bypath和pagehack对toast表及toast索引的特殊字段解析。
支持select for share/update记录xlog。
TDE支持索引加密和RLS支持表达式索引
TDE支持加密索引,支持将非加密表转换为TDE表。
对于表行级访问控制(RLS)开启且谓词包含系统函数或Like操作符的场景,支持索引扫描生效。
支持敏感数据发现首商用增强隐私保护高安全能力
敏感数据发现功能实现通过调用函数,指定扫描对象和敏感数据分类器,得到对应扫描对象不同明细级别的敏感数据信息。
Ustore适配防篡改达成首商用
支持Ustore存储引擎使用防窜改账本数据库功能。
ABO支持反馈和多表基数针对慢查询典型场景性能提升5倍和支持代价自适应针对算子选择不准场景性能提升1倍
自适应代价估计功能基于均匀混合模型(UMM),以及代价参数模型,提供代价估计的能力。利用负载监控线程监控模型准确度,实现快速高效的负载管理和模型增量更新,保证估计准确率;利用实时高效的查询谓词特征识别最优的基数估计策略;用于解决现网场景中数据和执行环境变化场景下,代价估计失真从而导致计划不优的问题。
编译报错显示准确行号
通过对行号的计算逻辑进行了调整,解决了函数头与函数体行号计算分割以及行号计算错误的问题,保证获取准确地报错行号。
高级包支持打热补丁
提供为高级包的相关组件打热补丁的能力。
内建图形化火焰图支持性能快速分析定位
支持手动或自动采集堆栈后,支持生成图形化火焰图文件。
支持自动定时采集堆栈和生成图形化火焰图文件。
基于解决页面漏置脏场景问题将底层存储异常定位时长从周级提升至天级
增加针对页面漏置脏场景的校验和DFX能力,提升底层存储返回错误版本场景的定位定界效率,将定位时长从周级别提升至天级别。
数据库内部页面漏置脏场景可以通过本特性覆盖解决,不产生错误版本xlog。
底层存储系统未返回正确的页面版本场景可以通过本特性新增的视图进行定界。
针对典型业务场景确保备机读100%成功且针对备机读问题定位时长从周级缩短至天级
极致RTO备机读优化查询取消场景,通过优化历史版本机制,使得部分场景不用触发查询取消,保证如下场景100%读成功,本次期望解决的场景:
删除或更新大量记录之后,做vacuum回收,文件末尾的无用数据页被truncate。
由于更新relmap造成的取消,如reindex database。
只读节点/级联备的复制槽自动清理。只读节点切换后,主机自动清理复制槽。当前是备机切换为级联备后,主机上的原备机的复制槽存在,导致主机上的xlog回收被阻塞,直到达到max_size_for_xlog_prune(256GB)后才触发回收。
补充备机读数据一致性定位增强日志信息,包含快照信息输出、元组关键信息输出等,新增guc参数进行输出信息的控制;增加备机读的灰盒用例看护,主要包括以下场景:DML场景、DDL场景、故障场景等。
通信模块典型问题场景排障定界时长从周/天级缩短至小时/分钟级
针对现网环境、测试环境、开发环境的典型通信问题场景,例如:GaussDB服务端建连hang/慢、pooler相关函数/视图有效信息缺乏、libcomm通信收发耗时无法统计,提升GaussDB通信模块典型问题场景定位定界能力。主要涉及三点内容:
GaussDB服务端响应连接通信链路DFX增强。
CN-CN/DN之间pooler通信库相关通信视图增加本端/对端信息。
libcomm通信库支持系统视图收集主DN之间长连接socket统计信息,以及支持explain performance查询分布式stream计划相关性能信息时展现libcomm通信侧耗时。
通过上述通信定位定界手段,增强GaussDB Kernel通信模块典型问题定位定界能力。
实现通信模块快速定位定界:从事后复现变成事中记录or排障定界时长从周/天级缩短到小时/分钟级。
丰富通信模块定位手段。新增3种定位手段:GaussDB响应连接通信链路打桩记录关键点时间、libcomm长连接统计信息、explain performance支持打印分布式stream计划下libcomm通信侧耗时。
超内存会话打印
提供阈值限制,单会话/sql使用内存超过限制后,打印内存详细信息(单SQL内存超限DFX信息)。
DFX性能视图内支持精细化db_time/wait event耗时统计
完善GaussDB各模块等待事件类型,提供更全面的定位手段:
细化db_time时间模型,包含网络时间。提升db_time对网络时间更精准的定位定界能力。
对于等待事件嵌套,有部分等待事件存在嵌套关系,之前不支持嵌套,会导致外层事件无法上报到wait event中,丢失外层的等待事件时间,无法定位外层等待事件耗时长的场景。支持嵌套之后,外层事件会上报,所消耗的时间也会补充。
补充等待事件空洞,对于比较重的代码块和比较大的逻辑块放到wait event中,补充等待事件空洞,提升了Full SQL 与asp在等待事件的定位定界能力。
WDR snapshot存储空间占用率面向典型场景降低40%
优化WDR snapshot存储空间占用和快照空间控制方法。
支持Astore基于HashBucket在线扩容商用
支持基于hashbucket表(Astore)的在线扩容技术,通过段页式库级数据分片和动态日志多流技术,实现物理文件搬迁的在线集群扩容方案,支持规模商用。
段页式支持Astore基于HashBucket在线扩容商用
段页式能力提升:
段页式极致RTO支持备机读(Astore)。
段页式支持元数据页面修复和文件修复。
段页式执行统计纳入WDR。
段页式pg_xlogdump和pagehack功能完善。
段页式支持Astore闪回(DROP/TRUNCATE)。
支持enable_segment参数。
分布式支持段页式系统视图和函数(包括手动残留清理函数支持hashbucket)。
段页式本地临时表独立存储。
段页式极致RTO回放性能优化。
undo段页式dfx能力增强:
undo段页式页面修复和文件修复 。
Undo临时\Unlogged功能增强。
Undo tslot\rdata断链防护。
Undo段页式关键流程运行日志增强。
段页式系统视图和函数支持Undo段页式文件。
opengauss&pg关键字整改专项
完成产品中关于opengauss和pg关键字的中低风险项的整改,去掉相关关键字描述。
问题修复
修复如下问题:
CN持续在lightproxy core。
switchove过程中,CM在进行僵死检测时,base端口无法建立连接。
建立连接阶段sockettime out in connection没有生效。
业务逻辑解码任务推进缓慢。
dbe_schedule高级包使用时间间隔方式拉起定时任务会忽略2月29日,解决耗时较长。
扩规格后cgroup未刷新,导致CPU资源管理限制了内核使用的CPU数量,性能上不去。
慢SQL管控规则的Hint对虚拟表不生效。
容灾集群,在数据库正常的情况,上报了DN异常告警。
安全加固
解决安全漏洞:
CVE-2023-28321
CVE-2023-50471
CVE-2023-46219
CVE-2023-46218
CVE-2023-38546
CVE-2023-4807
CVE-2022-34038
CVE-2023-27533
CVE-2023-27534
CVE-2023-50472
CVE-2023-5363
CVE-2023-29469
CVE-2023-3817
CVE-2023-32082
CVE-2023-28484
CVE-2023-28320
CVE-2023-3446
CVE-2023-28322
CVE-2023-45322
CVE-2023-38545
CVE-2023-27536
CVE-2023-27535
CVE-2021-28235
CVE-2023-45853
CVE-2023-2975
CVE-2023-27538
CVE-2023-36054
CVE-2023-5678
CVE-2023-6237
CVE-2023-6129
CVE-2024-0727
CVE-2024-25062
父主题: 内核版本发布记录
浙公网安备 33010602011771号