9.1.0.x版本说明

以下描述的Beta特性,表示该功能受限商用,使用时请联系技术支持。
9.1.0.220补丁(2025年7月)
该版本为受限补丁版本,主要修复以下问题:
9.1.0.218补丁(2025年5月)
该版本为补丁版本,主要修复以下问题:
类别 |
功能或问题描述 |
问题原因 |
问题出现版本 |
修复建议 |
---|---|---|---|---|
新增功能 |
无 |
- |
- |
- |
解决问题 |
开启LLVM后,高并发场景存在写锁问题。 |
开启LLVM后,高并发场景下,会因为内存的频繁申请释放触发OS内存回收,回收时会持有mmap写锁,阻塞其他线程的内存申请,影响内存的访问性能 |
9.1.0.218以前版本 |
升级到9.1.0.218及以上版本 |
Hstore表/时序表日落。 |
时序表、列存delta、历史HStore表自9.1.0.218及以上集群版本中功能日落,不再演进,统一用hstore_opt表替代。 |
- |
||
presort执行报错:invalid memory alloc request size |
runtimefilter预排序过程中错误获取了其他列的ID,导致后续获取的attlen错误,最终造成读数据长度时选择函数错误。 当错误获取了列属性长度(attlen=-1)时,系统误将GBK编码的中文字符用单字节处理函数读取,导致计算出负数字符长度值,内存分配失败 。 |
9.1.0.210 |
||
开启enable_hstore_binlog_table参数后,长时间运行业务,出现备机pg_csnlog文件堆积过大,执行清理后空间未回收。 |
binlog为了阻塞csnlog回收,需要做至少一次vacuum操作, 这个过程中主机上pg_binlog_slots会收集oldestxmin,但是备机不会执行,所以回收csnlog的oldestxmin一直阻塞在0,造成ckp不回收csnlog。 |
9.1.0.201 |
||
ANALYZE内存估算偏差大,导致CCN异常排队。 |
列定义宽度超过1024,实际存储数据很短或空数据时,ANALYZE内存估算宽度比较大。 |
8.1.3 |
||
批量执行upsert后,binlog源表和目标表不同步。 |
全列upsert场景在删除旧的binlog后提前return没有记录新的binlog,导致源表与目标表不同步。 |
9.1.0.218以前版本 |
||
修复容灾集群switchover后,关闭原主集群autovacuum及autoanalyze参数的问题。 |
主集群autovacuum原本是on,执行switchover后,被修改为off,当再次执行switchover切回后,发现autovacuum,autoanaly参数值不符预期。 |
9.1.0 |
||
修复升级场景下enable_orc_cache参数自动修改的问题。 |
低版本集群升级到9.1.0.1及以上集群版本后,enable_orc_cache参数由on会设置为off。 |
9.1.0.210 |
||
升级后报错:stream plan check failed |
value partition计划变化后,windowagg生成value partition计划上下节点不一致。 |
8.2.1.225 |
||
容灾切换后,主集群业务报错:xlog flush request |
容灾集群只有主CN进行备份,全量/增量备份类型(BackupType)会记录在备份集metadata文件,备集群恢复时会读取metadata文件信息来判断是否需要清理CN目录(全量恢复时清理)。由于主备集群CN编号可能存在不一致情况,依赖编号查找可能会无法准确读取BackupType信息,导致全量恢复场景遗漏必要的文件清理,残留文件引发业务运行报错。 |
9.1.0 |
||
Turbo问题加固。 |
未考虑部分非常规场景,(例如多union all及数据类型不一致),查询出现异常。 |
9.1.0 |
9.1.0.215补丁(2025年3月)
该版本为补丁版本,主要修复以下问题:
类别 |
功能或问题描述 |
问题原因 |
问题出现版本 |
修复建议 |
---|---|---|---|---|
新增功能 |
无。 |
- |
- |
- |
解决问题 |
智能运维调度触发下盘。 |
智能运维调度器在查询表大小时,通过pgxc_parallel_query函数下发到每个DN执行,而DN查询的结果集包括列存表的cudesc、delta等辅助表,而分区也有子表,且每个分区又有cudesc、delta,导致最终结果集较大。 DN将这些查询结果统一汇总到CN时,结果集太大触发下盘操作,导致查询慢或者磁盘容量冲高等现象。 |
8.3.0.100 |
升级到9.1.0.215及以上版本 |
使用存算分离V3表并关闭DiskCache场景下,偶现进程异常退出。 |
使用存算分离V3表场景下,如果关闭DiskCache,业务线程在读取OBS对象时申请空间失败的情况下,会触发事务回滚从而概率性导致异常。 |
9.1.0 |
||
节点亚健康(Hang)场景下,CM组件无法下发重启集群命令。 |
cm_ctl启动集群分为两个阶段:
SSH命令中参数解析不正确,导致节点故障时检查单个故障节点耗时超过300s,如果有多个节点同时故障则耗时会成倍增加,引发命令无法下发。 |
8.1.3 |
||
使用数据湖场景下,如果并发量超高(3000+),会引发CN与DN建连变慢从而导致整体性能变慢。 |
当前1个文件只会分配给一个DN。但是执行计划中,CN还是会和所有DN都建立连接。在数据湖的场景下,需要支撑单集群3000+并发,这块的开销就会很大。 |
9.1.0 |
||
使用数据湖场景下,如果写入过程字段超长时,会偶现DN进程异常。 |
数据湖场景下,写入过程中出现字段超长此时会报错,在事务回滚过程中,会调用清理相关逻辑,此时由于部分内存已经被提前释放,导致函数报错,触发DN进程异常退出。 |
9.1.0 |
||
安全漏洞(SQL注入漏洞(CVE-2025-1094))修复。 |
PostgreSQL漏洞公告 SQL注入漏洞(CVE-2025-1094),识别产品是否涉及该漏洞。 |
9.1.0 |
||
在行列混合场景,NestLoop算子+Stream算子的场景下偶现查询异常的问题。 |
Nestloop算子下有stream算子,需要先执行inner侧的物化算子。在行存和列存混合场景,在物化算子上有Row Adapter算子,此时造成未执行物化算子,引发Hang操作。 |
8.3.0.108 |
||
通信线程中空闲期检查DN连接造成数据库偶现慢问题。 |
通信线程(libcomm send proxy线程)在空闲期会遍历所有与其他DN的连接进行检查,单次检查消耗1ms,在大集群上遍历100+连接,可能耗时100ms以上,会阻塞下一个报文的发送,此时在实时性要求比较高的业务场景下会导致业务查询偶现慢。 |
9.1.0 |
9.1.0.213补丁(2025年2月)
该版本为补丁版本,主要修复以下问题:
类别 |
功能或问题描述 |
问题原因 |
问题出现版本 |
修复建议 |
---|---|---|---|---|
新增功能 |
Hive数据迁移到DWS后,在MySQL兼容模式下,支持配置空串是否自动转换为数字0。 |
- |
- |
- |
解决问题 |
JDBC连接时,INSERT OVERWRITE INTO涉及external外表时,出现临时表残留。 |
JDBC连接时,访问过程中有多个阶段(parser、bind、exec),在parser阶段对SQL进行rewrite,rewrite过程中会创建INSERT OVERWRITE临时表;如果涉及external外表在exec阶段会重新rewrite,即重新创建临时表,且未将parser生成的临时表删除,即临时表创建两次,仅删除后创建的临时表,导致临时表残留。 |
9.1.0.211 |
升级到9.1.0.213及以上版本 |
业务收到100%倾斜告警,倾斜内容为OVERWRITE临时表倾斜。 |
INSERT OVERWRITE和修改分布键时,会建立一张临时普通表,将源表数据插入到临时表中,如果出现了倾斜,会告警一张临时表的表名,导致无法分析。 |
9.1.0.211 |
||
Turbo引擎下,由于数据精度对齐导致的结果集问题。 |
当部分DN scan基表数据0行时,其向CN返回的结果集为NULL(默认小数点位数为0),其与有数据DN返回的sum结果进行合并时,误判断对齐数据精度,导致使用int64类型存储最终sum结果,出现结果集非预期问题。 |
9.1.0.212 |
||
使用external外表检查分区路径时,没有判断分区路径是否为空的问题。 |
hdfs server external外表检查分区路径是否与分区字段定义对应时,没有判断分区路径是否为空。 |
9.1.0.211 |
||
使用external外表从Hive MetaStore获取分区信息时,未对空指针返回值进行异常处理的问题 |
从Hive MetaStore获取的分区信息partition values为空指针。 |
9.1.0.212 |
||
convert_tz函数在某种场景下时区转换结果不符合预期。 |
convert_tz函数处理MySQL兼容性时,未考虑特殊时区写法导致结果非预期。 |
9.1.0.210 |
||
打开LLVM场景下,substr结果集错误问题。 |
ascll编码库可以导入gbk数据,走LLVM后,LLVM底层进行substr计算时,未判断gbk数据列substr(a, start_index, len)调用时,gbk为双字节字符,判断字符宽度时,复用了utf-8的字符宽度逻辑,导致gbk字符宽度计算为4(实际上应该为2),子串的长度计算错误。 |
8.1.3.x |
||
Turbo引擎下,inlist转hash特性时对字符串类型处理不当导致的结果集问题。 |
uniq hash表在Turbo引擎下内部进行字符串attlen16->attlen-1时,获取字符串长度错误的使用了strlen接口;hstoreopt delta表中出现attlen从-1变至定长场景需要提前进行batch转换。 |
9.1.0.212 |
9.1.0.212补丁(2025年1月)
该版本为补丁版本,主要修复已知问题。
【实时数仓】
- 修复date类型查询下推在MySQL兼容模式下的结果集问题。
- 修复limit为null或者all时,结果集错误问题。
- 修复统计信息错误重置,导致auto vacuum无法触发,影响空间无法及时回收的问题。
- 修复物化视图刷新和DDL并发的死锁问题。
- 修复冷热表扩容重分布异常后,手工删除临时表导致误清理原表数据的问题。
- 修复冷热表扩容的本地磁盘空间上涨问题。
【湖仓一体】
- 外表访问OBS,支持路径中带有特殊字符';'
- 优化parquet外表查询的任务分配,提升磁盘缓存命中率。
【备份恢复】
- 修复备份恢复可能残留中间状态文件,占用磁盘空间的问题。
- 修复弹性VW存在的情况下,备份失败问题。
- 备份恢复支持冷热表,备份恢复时间会变长。
【生态兼容】
- 修复PostGIS插件可能存在的创建失败问题。
【运维提升】
- 修复SQL监控指标采集不完整问题。
- 修复从备内存泄露问题。
- 修复智能运维未按时启动的问题。
- 修复drop database失败残留,导致调度器无法正常调度的问题。
- 修复高并发下,通信内存占用过高的问题。
- 修复异常情况下,GTM上残留sequence导致的性能问题。
【行为变更】
- 为避免复杂SQL执行可能报错,升级/新装会关闭谓词列analyze特性。
- 表定义包含sequence列的场景下,执行drop table操作时,如果与GTM的网络连接有问题,上一个版本会报warning,drop table可执行成功,但可能会导致GTM上sequence残留。新版本drop table会报错,需再次重试。由于DWS支持在事务块中支持drop table,如果drop table语句执行成功,但事务后续回滚,会存在sequence在GTM已经删除,表在CN上仍然存在的问题,需再次主动drop table,否则该表在后续使用时,会报sequence不存在的错误。
- truncate和select如果有加锁冲突时,支持truncate主动终止select操作,该特性默认关闭。在打开的情况下,上一个版本被终止的执行select的session会话会报错,但是连接不会关闭,新版本下,执行select的session会话会主动关闭,需业务主动重连。
9.1.0.211补丁(2024年12月13日)
该版本为补丁版本,主要修复已知问题。
9.1.0.210版本(2024年11月25日)
【存算分离】
- 支持通过使用explain warmup进行缓存预热,可以把数据预热到本地磁盘缓存的冷端或者热端。
- 弹性VW功能增强:更灵活的业务分流方式,支持以CN粒度配置业务分流到主VW或者弹性VW。
- 存算分离表支持insert并行,提升数据加载性能。
- 存算分离表支持回收站,可以对drop table/partition, truncate table/partition等误操作进行快速闪回。
- 冷热表支持使用磁盘缓存、异步IO进行性能加速。
【实时数仓】
- limit…offset翻页场景性能大幅提升;inlist场景性能大幅提升。
- 正式商用Binlog特性。
- 自动分区支持整型和变长类型的时间列。
【湖仓一体】
- parquet/orc读写新增对zstd压缩格式的支持。
- Create table like支持使用external schema中的表作为like源表。
- 外表支持并行导出。
【高可用】
- 存算分离表和冷热表支持增量备份恢复。
- 通过并行拷贝优化存算分离场景的备份性能。
【生态兼容】
- 兼容MySQL的replace into语法,interval时间类型。
- pg_get_tabledef导出支持字段展示comment。
【运维&稳定性提升】
- 磁盘使用率高时,支持配置从备数据转储到OBS。
- 当数据库即将发生只读时,拦截一些发生下盘的语句和产生新表和新物理文件的语句,以此快速回收磁盘空间,保证其它语句执行。
- 支持审计日志转储到OBS。
- 新增轻量级锁视图pgxc_lwlocks。
- 常规锁视图新增锁获取和等待时间戳。
- 全局死锁检测功能默认打开。
- 新增vacuum full与select之间的让锁功能。
- gs_view_invalid增加失效时间,辅助运维人员清理无效对象。
【规格&约束】
- 最大支持256个VW,每个VW 最大支持1024个DN。建议VW不超过32个,每个VW不超过128个DN。
- OBS存算分离表不支持容灾,不支持细粒度备份恢复。
【行为变更】
- 升级开启max_process_memory自适应功能,主备均衡模式下,增加DN可用内存。
- 扩容数据重分布默认开启数据一致性校验,扩容时间会增加10%。
- 新建Hstore_opt表,默认打开turbo引擎,压缩级别默认为middle。
- 存算分离表OBS路径默认显示为相对路径。
- 使用磁盘缓存(diskcache)必须同时打开异步IO参数。
- 列存表的索引清理时间间隔从1小时调小为10分钟,可以更快速地清理占用的索引空间。
- CREATE TABLE和ALTER TABLE不支持将有on update表达式的列设置为分布列。
- Parquet数据查询,读取INT96格式保存的Timestamp数据时不再做8小时修正。
- max_stream_pool用于控制stream线程池缓存的线程数量,默认值由65525调整至1024,避免空闲线程内存占用过大。
- track_activity_query_size参数从动态生效调整为重启生效。
- 不再支持逻辑复制功能,相关接口调用会报错。
9.1.0.105补丁(2024年10月23日)
该版本为补丁版本,主要修复已知问题。
9.1.0.102补丁(2024年9月25日)
该版本为补丁版本,主要修复已知问题。
【升级收编】
【修复已知问题】
- 存算分离版本支持alter database xxx rename to yyy。
- 修复存算分离表 \d+ 空间size显示错误问题。
- 修复备份恢复之后,异步排序未运行的问题。
- 修复bitmap index列删除后,无法使用Create Table Like语法的问题。
- 修复Turbo引擎在Group By场景下,hash算法冲突导致的性能回退问题。
- 调度器对于失败任务的处理行为和8.3.0版本保持一致。
- 修复故障场景下,pg_stat_object空间膨胀问题。
- 修复8.3.0升级到9.1.0,DataArts Studio下发的Vacuum Full作业报错问题。
- 修复JSON字段计算CPU和内存消耗高问题。
【功能增强】
- ORC外表支持zstd压缩格式。
- GIS新增支持st_asmvtgeom/st_asmvt/st_squaregrid函数。
9.1.0.100版本(2024年8月12日)
【弹性架构】
- 架构升级:基于华为云对象存储服务OBS,推出存算分离架构3.0,计算、存储分层弹性,存储按需收费,降本增效;计算支持多VW(Virtual Warehouse,逻辑集群,以下简称VW)部署,业务隔离性更好,解决业务间的资源争抢问题。
- 推出弹性VW特性,弹性VW完全无状态,支持读写加速,灵活应对并发处理能力不足、业务波峰波谷不均衡、数据加载和数据分析资源争抢等问题,详情参见弹性增删逻辑集群。
- 增删DN节点,支持弹性扩容和经典扩容,弹性扩容不会对OBS上的数据进行重分布,经典扩容会重分布所有数据,系统会根据bucket总数和DN数目,自动决定采用何种扩容方式。
- 存算分离架构(DWS 3.0)通过磁盘缓存和IO异步读写提升性能,在磁盘缓存全命中时,持平存算一体架构(DWS 2.0)。

【实时处理】
- 推出向量化Turbo加速引擎,tpch 1000x性能翻倍。
- 推出hstore升级版本hstore_opt,压缩比更高,配合Turbo引擎,空间比列存节省40%。
- 支持Flink直连DN入库,批量入库场景,性能线性提升,详情参见Flink实时消费Binlog。
- 支持Binlog(Beta特性),配合Flink可实现增量计算,详情参见订阅实时数仓Binlog。
- 全列更新性能显著提升,资源消耗显著下降。
- 支持物化视图(Beta特性),详情参见CREATE MATERIALIZED VIEW。
- Varchar/text列支持bitmap index,bloom filter,提升粗过滤效果,需建表时显式指定,详情参见CREATE TABLE。
- 支持runtime filter特性,提升topK和join场景性能,详情参见GUC参数runtime_filter_type、runtime_filter_ratiox。
- 支持异步排序,提升PCK列的min-max粗过滤效果。
- 大幅提升IN场景的性能。
- Analyze支持分区统计信息增量合并(分区表只收集变化分区的统计信息,复用历史分区统计信息),支持只采集谓词列的统计信息,提升Analyze执行效率,详情参见:
- CREATE TABLE语法新增incremental_analyze,用于控制分区表是否启用增量Analyze模式。
- GUC参数enable_analyze_partition,控制是否支持对表的某个分区收集统计信息。
- GUC参数enable_expr_skew_optimization,控制是否在倾斜优化策略中使用表达式统计信息。
- ANALYZE | ANALYSE。
- Create index/reindex支持并行。
- 新增函数pgxc_get_cstore_dirty_ratio,用于获取目标表的CU、Delta以及CUDesc的脏页率(仅支持hstore_opt)。
【融合统一】
- 一键湖仓:通过create external schema直接对接HiveMetaStore元数据,避免复杂的create foreign table操作,降低维护代价,详情参见跨集群访问HiveMetaStore元数据。
- 支持parquet/orc格式读写,支持覆盖写、追加写,支持多级分区读写。
- 支持hudi格式读。
- 外表Analyze支持并行执行,显著提升统计信息收集的精度和速度;外表不具备AutoAnalyze能力,建议导入数据之后手动做Analyze收集统计信息。
- 外表支持使用本地disk cache进行读加速。
- 外表支持in/not in等谓词下推,增强分区剪枝能力。
- 外表支持复杂类型map/struct/array,支持bytea/blob类型。
- 外表支持数据脱敏和行级访问控制功能。
- GDS导出外表支持容错参数compatible_illegal_char。
- 新增orc/parquet文件解析函数read_foreign_table_file,便于问题定界。
【高可用】
- 极大提升unlogged table故障恢复速度。
- 备份集支持跨版本恢复,细粒度表级恢复支持恢复低版本集群(8.1.3及以后版本)生成的备份集。
- 细粒度表级恢复支持恢复至异构集群(节点数、DN数、CN数均可不一致)。
- 细粒度恢复支持权限、注释:集群级物理细粒度备份,schema级物理细粒度备份新增支持备份权限与注释,表级恢复以及schema级灾难恢复支持恢复权限与注释。
【空间优化】
- 列存支持jsonb/json类型,历史版本Json类型只能创建为行存表,新版本可以创建为列存表。
- 冷热表支持分区级index unusable,对于冷分区通过该特性节省本地索引空间。
- 推出hstore升级版本hstore_opt,压缩比更高,配合Turbo引擎,空间比列存节省40%。
【运维&稳定性提升】
- 查询过滤器增强,支持按SQL特征、类型、来源、处理数据量进行拦截,详情参见:CREATE BLOCK RULE。
- 空闲连接自动回收,及时释放内存资源,详情参见GUC参数syscache_clean_policy,用于设置DN空闲连接内存及数量清理策略。
- 新增函数gs_switch_respool,支持动态切换queryid/threadid使用的资源池,可以动态调整SQL使用的资源,详情参见gs_switch_respool。
- 新增视图pg_sequences,显示当前用户具有访问权限的序列的属性信息。
- 新增函数查询指定共享内存下内存申请的所有chunk信息,详情参见:
- 新增函数pgxc_query_resource_info,显示指定query_id对应的SQL语句在所有DN上的资源使用信息,详情参见pgxc_query_resource_info。
- 新增函数pgxc_stat_get_last_data_access_timestamp,返回目标表最近一次的访问时间,方便业务清理长期不访问的表,详情参见pgxc_stat_get_last_data_access_timestamp。
- SQL Hint支持更多的Hint设置,可以更准确的控制执行计划的生成,详情参见配置参数的hint。
- TopSQL增加语法解析和磁盘缓存相关的性能字段,方便定位性能问题,详情参见实时TopSQL。
- 预置数据脱敏管理员,具有创建、修改、删除脱敏策略的权限。
- 审计日志支持记录级联删除的对象。
- 审计日志支持转储到OBS对象存储。
【生态兼容】
- create schema/create index/create sequence 支持 if not exists。
- Merge into支持指定分区,详情见MERGE INTO。
- TD兼容模式下支持比较字符串忽略尾部空格。
- 支持通过GUC参数配置,控制varchar(n)的n是否自动转换为nvarchar2。
- PostGIS 升级到3.2.2版本。
【规格&约束】
- 最大支持256个VW,每个VW 1024 DN,建议VW不超过32个,每个VW不超过128 DN。
- OBS存算分离表不支持容灾,只支持全量备份恢复。
【行为变更】
- 新增“status”关键字,应避免将“status”作为数据库对象名称使用。如果修改字段别名为status时业务报错,可以通过在业务语句中增加AS来规避,如下举例:
1 2 3 4
SELECT c1, min(c2)status, c3 from t1; //报错SQL ERROR: syntax error at or near "status" SELECT c1,min(c2) AS status, c3 from t1; //规避问题的SQL,增加AS
- 不支持全库vacuum full/analyze/cluster,语法不会报错,但实际不会执行,只支持单表vacuum full/analyze/cluster。
- OBS存算分离表,不支持delta表,enable_delta=on不会报错,但是delta表不生效。如果有delta表诉求,可以使用hstore-opt表替代。
- 默认开启numa绑核,可动态关闭(enable_numa_bind)。
- 8.3.0 Turbo表中的numeric(38)升级到910版本会修改为numeric(39),显示宽度不受影响,版本回退也不会回滚。
- 由于支持存算分离,DWS 3.0默认EVS存储空间比DWS 2.0少一半(客户买1T EVS存储,3.0是主备各500G,2.0是主备各1T),如果是DWS 2.0迁移到DWS 3.0,对EVS存储仍然有强诉求,那么DWS 3.0买EVS存储时要买DWS 2.0 2倍的空间。