云服务器内容精选

  • 系统视图 表6 系统视图 变更类型 序号 名称 变更描述 新增 1 pgxc_memory_debug_info 显示当前集群每个节点在执行作业时的内存报错信息,便于定位内存报错问题。 修改 2 pgxc_stat_object 跟随pg_stat_object一起更改,预留字段extra1改名为last_autovacuum_csn。 3 gs_wlm_session_statistics 增加parse_time字段。 4 pgxc_wlm_session_statistics 增加parse_time字段。 5 gs_wlm_session_history 增加parse_time字段。 6 pgxc_wlm_session_history 增加parse_time字段。 7 gs_wlm_session_info 增加parse_time字段。 8 information_schema.tables 修改视图定义,改变筛选条件,使reloptions为空的视图可以查到。 9 gs_table_stat 优化gs_table_stat视图查询性能。 10 gs_row_table_io_stat 等价逻辑改写查询性能优化。 11 gs_column_table_io_stat 等价逻辑改写查询性能优化。 删除 12 gs_wlm_session_info_all 废弃系统视图日落。 13 pg_wlm_statistics 废弃系统视图日落。 14 pg_session_iostat 废弃系统视图日落。
  • GUC参数 表7 GUC参数 变更类型 序号 名称 变更描述 新增 1 max_queue_statements 默认为-1,表示最大排队长度,当作业排队超过该值时报错退出。对于新装和升级集群该参数不生效。 2 job_retention_time 表示pg_job执行结果最长保存天数,默认为30。 3 vector_engine_strategy 控制向量化算子的策略,默认为improve,表示尽可能将计划向量化;可设置为force,表示强制回退为行存计划。 4 enable_release_scan_lock 控制SELECT语句是否在语句执行结束后将一级锁释放。默认关闭。 5 approx_count_distinct_precision 该参数表示HyperLogLog++ (HLL++)算法中分桶个数,可以用来调整approx_count_distinct聚集函数的误差率。桶的个数会影响distinct值估算的精度,桶的个数越多,误差越小。默认值17。 6 llvm_compile_expr_limit 限制LLVM表达式最大编译个数。 7 llvm_compile_time_limit LLVM编译时间在执行器运行时间中的占比超过llvm_compile_time_limit所设置的阈值,说明LLVM编译时间占比过高,生成告警提示。 8 max_opt_sort_rows 控制order by子句中最大优化的limit+offset行数。如果超过这一行数,走原逻辑,小于这个行数走优化后逻辑。默认设为0,即默认走原逻辑。 9 dfs_max_memory 设置orc导出时能占用的最大内存。默认值262144KB。 10 default_partition_cache_strategy 控制分区缓存的默认策略。 11 enable_connect_standby 设置CN是否连接DN备机。仅适用于运维操作。 12 enable_stream_sync_quit 设置stream计划结束时,stream线程是否同步退出。默认关闭,实现sync quit不阻塞。 13 full_group_by_mode 用于控制disable_full_group_by_mysql语法开关打开后的两种不同行为: nullpadding表示对于非聚集列而言,对该列NULL值进行填充,取该列非NULL值,结果集可能为不同行。 notpadding表示对于非聚集列而言,不处理NULL值,取该行整行数据,非聚集列结果集为随机的一行。 修改 14 behavior_compat_options 新增选项alter_distribute_key_by_partition,控制ALTER TABLE修改分区表分布列时INSERT INTO是否按分区执行。 15 behavior_compat_options 新增选项enable_full_string_agg,控制string_agg(a, delimiter) over (partition by b order by c)场景行为,采用窗口内的全量聚合逻辑还是增量聚合逻辑。 16 behavior_compat_options 新增选项unsupported_set_function_case,控制是否支持case when条件中含有返回为多结果集函数。 17 behavior_compat_options 新增选项enable_unknown_datatype。在未设置时,不允许用户创建存在unknown类型列的表。 18 behavior_compat_options 新增选项enable_whole_row_var。针对使用表名做表达式场景(SELECT T FROM T,或SELECT .... FROM T GROUP BY T),未设置enable_whole_row_var选项时,在parse阶段,对该类场景进行拦截,报错处理。 19 time_track_strategy 参数由USERSET级别修改为SIGHUP级别,内核层面默认修改为timer,可以通过管理控制台设置为tsc。 20 rewrite_rule 控制在重写时是否走case when改写。
  • 系统函数 表5 系统函数 变更类型 序号 名称 变更描述 新增 1 dbms_job.submit_node 新增dbms_job.submit_node,功能在submit基础上增加job_node,用于指定执行节点,默认null,代表当前CN节点。 2 dbms_job.change_node 新增dbms_job.change_node用于指定执行节点,默认null,代表当前CN节点。 3 漏斗函数 新增漏斗函数windowfunnel。 4 留存函数 新增留存函数retention。 5 留存扩展函数 新增留存扩展函数range_retention_count。 6 留存扩展函数 新增留存扩展函数range_retention_sum。 7 approx_count_distinct 新增近似计算聚集函数。 8 pg_scan_residualfiles 扫描当前节点当前库中所有符合特征的残留文件。 9 pgxc_scan_residualfiles 扫描多个节点当前库中所有符合特征的残留文件。 10 pg_get_scan_residualfiles 获取当前节点扫描到的残留文件列表。 11 pgxc_get_scan_residualfiles 获取多个节点上扫描到的残留文件列表。 12 pg_archive_scan_residualfiles 归档当前节点扫描的残留文件列表。 13 pgxc_archive_scan_residualfiles 归档多个节点上扫描的残留文件列表。 14 pg_rm_scan_residualfiles_archive 删除当前节点所有残留文件归档。 15 pgxc_rm_scan_residualfiles_archive 删除多个节点上所有残留文件归档。 16 pg_partition_management_time 修改自增分区任务调用时间。 17 uniq 辅助完成精准去重等对数据的uv计算。 18 reload_cold_partition 冷热表冷分区转热。 修改 19 pgxc_get_small_cu_info 增加可以查询二级分区每个分区cu数量的功能。 20 pgxc_get_wlm_session_info_bytime 增加parse_time字段。 删除 21 pg_sync_cstore_delta(text) 废弃系统函数日落。 22 pg_sync_cstore_delta 废弃系统函数日落。 23 pgxc_pool_check 废弃系统函数日落。 24 pg_delete_audit 废弃系统函数日落。 25 pg_log_comm_status 废弃系统函数日落。 26 pgxc_log_comm_status 废弃系统函数日落。 27 signal_backend 废弃系统函数日落。 28 pg_stat_get_realtime_info_internal 废弃系统函数日落。 29 pg_stat_get_wlm_session_info_internal 废弃系统函数日落。 30 pg_stat_get_wlm_session_info 废弃系统函数日落。 31 pg_stat_get_wlm_statistics 废弃系统函数日落。 32 pg_user_iostat 废弃系统函数日落。 33 pg_stat_get_wlm_session_iostat_info 废弃系统函数日落。
  • 行为变更 表2 行为变更 变更类型 序号 名称 变更描述 删除 1 policy_oid 原policy_oid字段在升级到8.3.0版本时字段为NULL,现改为在升级阶段通过脚本对policy_oid字段填充对应的policy_oid。 修改 2 gs_dump gs_dump会带上索引的unusable状态。 3 pg_get_tabledef pg_get_tabledef会带上索引的unusable状态。 4 pg_get_indexdef pg_get_indexdef会带上索引的unusable状态。 5 create table like including复制的索引会带上源索引的unusable状态。
  • 行为变更 表7 行为变更 变更类型 序号 名称 变更描述 新增 1 分区视图依赖变化 8.2.1以前版本,没有对select partition()或者partition for()语句的视图建立视图依赖,造成查询报错。 8.2.1版本后新增分区oid依赖,对于drop分区或者修改分区范围值在视图解耦场景下引发视图重建,非视图依赖场景下会报错。 修改 2 增加GTM上gtm_max_trans参数取值上限。 先将线程最大限制调大,可以给现网一个逃生通道,解决某些局点集群规模大,业务并发高,可能存在达到线程上限进而无法连接的问题。 3 max_process_memory CN调整为DN的一半。 4 Catchup流程 去掉了数据页Catchup的事务锁,Catchup不再和DDL之间有互等关系;增加了LwLock,通过事务提交的LwLock进行Catchup以及DDL业务之间的串行操作,避免Catchup访问到空文件。 5 备DN checkpoint时机 备DN的checkpoint不再等待15min按周期运行,而且redo到checkpoint点后,会强制执行一次checkpoint,避免大数据xlog导入场景下,备DN的Rto过长。 6 备DN文件关闭时机 备DN执行heap_xlog_newpage以及seq_redo时,首页面写入数据后,会强制关闭。 7 indexscan hint可包含indexonlyscan indexscan hint可包含indexscan和indexonlyscan;与indexonlyscan hint同时存在时,indexonlyscan优先生效。 8 大小写表达式不支持roughcheck 大小写表达式不再支持roughcheck,因cu的minmax基于C排序计算,下推会有结果集问题。 9 多count(distinct)重写时,使用CTE进行重写 重写行为发生变化,非share scan场景不影响后续展开过程,share scan场景生成stream CTE的计划。 10 TopSQL子语句监控 TopSQL子语句监控规格从递归打开,变更为仅记录第一层子语句。 11 ArrayLockFreeQueue 无锁队列初始化分配内存不会超过1GB。 12 Explain Explain结果集新增显示unique sql id。 13 Explain Explain+查询语句的unique sql id与查询语句相同。 14 GS/PGXC_WLM_SESSION_STATIS TICS 视图 GS/PGXC_WLM_SESSION_STATISTI CS 视图新增unique sql id字段。 15 GROUP BY后不需体现所有非聚合函数查询字段 8.1.3版本处理时会将非聚合函数查询字段补为min(xx)的形式,8.2.0及以上版本修改为取该列随机值。 8.2.0版本对于多列非聚合函数查询字段取值时取该列非NULL值,会出现结果集不同行场景,8.2.1版本修改为结果集为相同行。 16 alter function owner to superuser 禁止了sysadmin用户修改函数/存储过程的owner到系统用户的场景。保留系统用户change到系统用户的场景。 17 (+)连接顺序变化,会导致带有nvl等表达式的结果集产生变化 (+)连接顺序与Oracle看齐,原(+)连接顺序与join关联顺序相关,改写后带有nvl等相关表达式的关联条件顺序及结果集会有变化。 18 hstore表并发更新同一行会直接报错,不再等待后报错 hstore表并发更新同一行会直接报错,不再等待。 之前的行为是:(1)并发update同一行等待后报错;(2)并发delete同一行等待后成功;(3)并发delete和update同一行等待后报错。修改为统一的行为。 19 Catchup不再拿一级锁 Catchup不再拿一级锁。 20 连续的failover逻辑中,只有首次会进行从DN到备DN的数据同步 连续的failover逻辑中,只有首次会进行从DN到备DN的数据同步。 21 不同session同名临时表执行相同SQL语句时unique sql id一致 8.2.1以前版本不同session同名临时表schema name不同,直接使用后生成的unique sql id就也不同。8.2.1版本修改后不同session同名临时表根据schema name替换固定字符串,保证执行相同SQL语句时unique sql id一致。 22 细粒度容灾支持主集群degraded状态下备份 细粒度容灾在支持主集群degraded状态下备份,例外场景主集群主节点无正常CN导致的degraded不支持。 23 视图解耦 当访问到无效视图时,不触发自动重建动作,即不更新系统表,而是在本地展开
  • 系统视图 表6 系统视图 变更类型 序号 名称 变更描述 新增 1 SHOW_TSC_INFO 用于查看当前节点TSC换算信息。 2 SHOW_ALL_TSC_INFO 用于查看所有节点TSC换算信息。 3 GET_TSC_INFO 用于重新获取一次当前节点的TSC换算信息,仅用于判断是否稳定,不更新内存信息。 4 GET_ALL_TSC_INFO 用于重新获取一次所有节点的TSC换算信息,仅用于判断是否稳定,不更新内存信息。 5 PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS 用于展示实体表在DN所占磁盘空间倾斜率。 6 PGXC_STAT_OBJECT 查询全集群所有节点的pg_stat_object信息。 7 PG_GLOBAL_TEMP_ATTACHED_PIDS 查看全局临时表在当前节点占有资源的会话信息。 8 PGXC_GLOBAL_TEMP_ATTACHED_PIDS 查看全局临时表在所有节点占有资源的会话信息。 9 PG_STATS_EXT_EXPRS 用于查询保存在系统表pg_statistic_data中的表达式统计信息数据。 10 PV_RUNTIME_EXPRSTATS 基于pg_stat_get_runtime_exprstats函数建立,用于查询动态采样生成的表达式统计信息。 11 PG_PLAN_BASELINE 新增系统视图,保存sql和plan之间的绑定关系。 12 PG_STAT_OBJECT_EXT 新增系统视图,通过在pgxc_parallel_query内层为视图添加查询条件,从而加速返回pgxc_stat_object相应查询条件返回的结果。 修改 13 GS_WLM_SESSION_STATISTICS 新增列stmt_type标识语句类型。 14 PGXC_WLM_SESSION_STATISTICS 新增列stmt_type标识语句类型。 15 GS_WLM_SESSION_HISTORY 新增列stmt_type标识语句类型。 16 GS_WLM_SESSION_INFO 新增列stmt_type标识语句类型。 17 PGXC_WLM_SESSION_HISTORY 新增列stmt_type标识语句类型。 18 PGXC_WLM_SESSION_INFO 新增列stmt_type标识语句类型。 19 GS_RESPOOL_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 20 PGXC_RESPOOL_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 21 PG_TOTAL_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 22 PGXC_TOTAL_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 23 PGXC_RESPOOL_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 24 PGXC_WLM_USER_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 25 GS_WLM_SESSION_STATISTICS/PGXC_WLM_SESSION_STATISTICS 新增except_info显示语句触发的异常规则信息。 26 GS_WLM_SESSION_INFO/PGXC_WLM_SESSION_INFO 新增except_info显示语句触发的异常规则信息。 27 GS_WLM_SESSION_HISTORY/PGXC_WLM_SESSION_HISTORY 新增except_info显示语句触发的异常规则信息。 28 REDACTION_COLUMNS redaction_columns修改视图定义,新增字段policy_name。 29 PG_STATS PG_STATS视图中增加partname来表示分区。 30 PV_RUNTIME_A TTS TATS pg_catalog.pv_runtime_attstats视图中增加partname来表示分区。 31 GS_WLM_OPERATOR_STATISTICS 新增字段:父节点id、执行次数、进度、网络、磁盘读写。 32 PGXC_WLM_OPERATOR_STATISTICS 新增字段:父节点id、执行次数、进度、网络、磁盘读写。 33 PGXC_STAT_OBJECT 跟随pg_stat_object一起更改,预留字段extra1改名为last_autovacuum_csn。
  • 系统函数 表5 系统函数 变更类型 序号 名称 变更描述 新增 1 SHOW_TSC_INFO() 用于查看当前节点TSC换算信息。 2 GET_TSC_INFO() 用于重新获取一次当前节点的TSC换算信息,仅用于判断是否稳定,不更新内存信息。 3 TEST_TSC_INFO(time double, loops int) 用于测试TSC换算时间的准确性,其中时间不得大于60s,循环次数范围值[1,10]。 4 GET_FIRST_VALUE 返回当前列第一行值。 5 READ_GLOBAL_VAR 用于读取例如my.var的全局session级变量。 6 GS_QUERY_PENALTY(query_id) 新增手动降级函数,入参为query_id。 7 CURRENT_TEMP_SCHEMA 显示当前会话的临时schema。 8 GS_WAIT_CURRENT_ACTIVE_DDL_COMPLETE 等待所有线程的guc参数生效。 9 PGXC_WAIT_CURRENT_ACTIVE_DDL_COMPLETE 等待所有线程的guc参数生效。 10 GS_SWITCH_PART_RELFILENODE 用于交换两个指定分区的filenode。 11 REFRESH_HOT_STORAGE(text) 用于将指定冷热表的所有分区数据全部刷到OBS上。返回的数值为执行完该函数后,当前多温表中在DN上冷分区的个数。 12 REFRESH_HOT_STORAGE(text,text) 用于将指定冷热表的分区数据刷到OBS上。返回的数值为执行完该函数后,当前该分区在DN上冷分区的个数。 13 PG_QUERY_AUDIT_DETAILS 通过调用pgxc_query_audit或pg_query_audit来解析object_details、object_name字段。 14 PGXC_HSTORE_DELTA_INFO 提供系统函数pgxc_hstore_delta_info('relname'), 从CN上查询HStore表的Delta表上各种类型记录的数量、表的大小等信息,用于辅助定位问题。 15 COPY_PARTITION_STATS 将一个表的分区统计信息复制给另外一个不存在统计信息的分区。 16 UPDATE_PARTITION_RELSTATS 更新分区表的统计信息relpages和reltuples。 17 PG_GET_STAT_EXPRESSIONS 用于获取创建的表达式统计信息中表达式的文本表示形式。 18 GS_HSTORE_COMPACTION 手动触发hstore表的compaction,不受autovacuum_compaction_rows_limit控制,第一个参数传入表名,第二个参数设置小CU行数的阈值,第二个参数不设置则默认100。 19 PG_SCAN_RESIDUALFILES 新增残留文件扫描系统函数。 20 PG_GET_SCAN_RESIDUALFILES 新增获取已扫描的残留文件列表系统函数。 21 PGXC_LOCK_WAIT_STATUS() 集群锁等待关系查询。 22 PG_CANCEL_BACKEND(pid, msg) 中断pid会话时支持传入指定消息作为报错信息提示。 23 PG_GET_STATISTICSOBJDEF 新增pg_get_statisticsobjdef函数来获取表达式统计信息的创建语句。 24 PG_STAT_GET_ALL 输入namespace.relname,返回当前CN哈希表中pg_stat_object中该表对应的tuple。 25 PGXC_STAT_GET_ALL 输入namespace和relname,返回所有CN上哈希表中pg_stat_object中该表对应的tuple。 26 PGXC_STAT_OBJECT_BYNAME 新增系统函数,通过输入namespace.relname,加速返回pgxc_stat_object相应relname限定的记录。 27 PG_DUMP_PLANMGMT_INFO 实时刷入待保存计划,便于下一步处理bind、unbind、drop等操作。 28 PG_FOREIGN_INSERT_COMMIT 用于对external schema表对象执行insert时CN给DN下发rename计划。 29 PG_SYSTEM_WITH_TOAST_CREATE 为pg_external_namespace系统表创建toast表。 30 PG_GET_EXTERNAL_SCHEMA_TABLE_OPTIONS 获取external schema表对象的option。 31 PG_GET_EXTERNAL_SCHEMA_TABLE_COL 获取external schema表对象的列元数据。 修改 32 GS_WLM_REBUILD_SCHEMA_HASH(oid) 修改入参从int改为OID。 33 GS_WLM_ALL_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 34 GS_GET_RESPOOL_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 35 GS_WLM_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed),新增入参username。 36 PG_STAT_GET_WLM_REALTIME_SESSION_INFO 新增except_info显示语句触发的异常规则信息。 37 GS_TABLE_DISTRIBUTION 增加字段relpersistence: t:本地临时表 g:全局临时表 u:unlogged表 p:普通表 增加字段sessionid全局临时表的会话线程id。 38 PG_FAST_TABLE_SIZE 增加字段relpersistence: t:本地临时表 g:全局临时表 u:unlogged表 p:普通表 增加字段sessionid全局临时表的会话线程id。 39 PG_LIFECYCLE_TABLE_DATA_DISTRIBUTE 修改函数使得非管理员用户可以使用。 40 PG_QUERY_AUDIT 审计日志中新增object_details、result_rows、error_code列,修改pg_query_audit输出参数,新增输出三列。 41 PGXC_QUERY_AUDIT 审计日志中新增object_details、result_rows、error_code列,修改pgxc_query_audit输出参数,新增输出三列。 42 GET_COL_CU_INFO 新增参数dirty_percent,取值范围1-100,默认值70。 新增返回列dirty_cu_count,返回删除率大于dirty_percent的CU数量。 43 PG_STAT_GET_WLM_REALTIME_OPERATOR_INFO 新增字段:父节点id、执行次数、进度、网络、磁盘读写。 44 PG_STAT_GET_WLM_REALTIME_OPERATOR_INFO 新增入参queryid,查询指定queryid的语句信息。 45 TRUNC(timestamp with time zone)函数修改稳定性类型 该函数之前定义的为immutable,但是根据实际函数的应用场景应该是stable的,修改前在某些条件下会性能差。 46 PG_STAT_GET_WLM_REALTIME_SESSION_INFO 新增列stmt_type字段标识语句类型。 47 PG_STAT_GET_WLM_REALTIME_SESSION_INFO 新增unique_sql_id字段。
  • 系统表 表4 系统表 变更类型 序号 名称 变更描述 新增 1 PG_STAT_OBJECT autovacuum线程记录统计信息和autovacuum效果信息到系统表pg_stat_object中。 2 PG_PLAN_BASELINE 保存sql和plan之间的绑定关系。 3 PG_PROC_REDACT 新增系统表,记录手动不脱敏函数。 修改 4 GS_WLM_SESSION_INFO 新增字段stmt_type标识语句查询类型。 5 GS_RESPOOL_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 6 GS_WLM_USER_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 7 PG_REDACTION_POLICY 新增policy_order字段,记录同一个表对象关联的脱敏策略的优先级次序,序号越大表示越后创建,优先级更高。 8 PG_REDACTION_COLUMN 新增policy_oid字段,记录当前脱敏列信息对应的是哪个脱敏策略。8.2.1版本后,脱敏策略的脱敏列是一对多的关系,脱敏策略的表对象是多对一关系。 9 PG_STAT_OBJECT 将预留字段extra1改名为last_autovacuum_csn。 10 GS_WLM_SESSION_INFO 增加unique_plan_id、sql_hash、plan_hash、use_plan_baseline字段。
  • 9.1.1.100版本(2025年7月) 表1 9.1.1.100版本新增功能 功能分类 功能 功能描述 参考文档 弹性架构 弹性VW支持Analyze 弹性VW支持Analyze功能,有效降低主VW压力,提升系统扩展性。该功能由GUC参数analyze_options控制,当取值为analyze_on_vw,表示启用,默认开启。 analyze_options 弹性VW执行能力增强 支持更灵活的作业路由和更丰富的资源管控机制(索引点查、短查询场景除外)。 存算分离场景下按需弹性VW:高性价比地适应灵活多变的业务需求 实时分析 支持行列混存能力 支持表内行列混存能力(基于Hstore_opt表),全字段点查性能提升3~5倍,等效实现了行存压缩效果。 使用DWS行列共存表 HStore引擎实现Light Update能力 HStore引擎实现轻量化更新(Light Update)能力,实现宽表部分列更新场景下,入库性能提升3倍以上,领先同类产品;查询性能影响不超过20%,并保证数据最终一致性。 创建Hstore_opt表时指定enable_light_update参数开启,且确保控制全局的GUC参数enable_hstore_lightupdate_table(即是否支持创建轻量化更新的Hstore_opt表)已打开。 Copy模式入库支持volatile临时表 Copy模式入库支持volatile临时表,不记录到xlog日志,进一步提升攒批入库性能。 - Autovacuum优化 Autovacuum时效性大幅优化,HStore引擎Delta表空间膨胀可控制在1倍以内。 - Binlog优化 Binlog支持存算分离Hstore_opt V3表,支持PartialUpdate(部分更新)。 实时数仓Binlog Binlog优化导出反查逻辑、CN/DN间全同步开销、辅助表空间清理逻辑等,性能提升约30%,辅助表空间缩减约35%。 - 直连DN入库支持一致性哈希算法 直连DN入库支持一致性哈希算法,已集成至dws-connector。 Flink SQL概述 开箱性能优化 开箱性能优化,标准benchmark性能提升30%,Turbo引擎SIMD优化、global runtime filter分布式执行等。 - 支持使用uniq语句改写count (distinct xxx)语句 精确去重count(distinct)支持自动转内置uniq函数,无需手动改写,提高SQL性能。 通过GUC参数rewrite_rule的count_distinct_rewrite_opt选项控制,默认开启该功能。 Filter下推增强 Filter下推新增支持int、numeric类型、大于、小于等表达式, 整体性能提升20%,优势场景下可提升3~5倍。 通过GUC参数enable_cu_predicate_pushdown 控制,启用后,能够普遍提升查询性能,尤其是在涉及bitmap_columns列和pck排序列时性能会显著提升。 新增支持CU的roughcheck的allmeet快速过滤,性能提升35%。 - 高可用 增加亚健康场景检测 增加网络延时、丢包等亚健康场景检测,可及时触发主备切换,提升系统可靠性。 - 从备数据支持自动转储OBS 从备数据支持自动转储OBS,降低故障场景下磁盘满的风险。 - Parquet外表导出性能优化 Parquet外表导出性能优化,与ORC外表持平。 - 优化OBS接口 外表OBS接口调用优化,减少不必要的ListBucket、ListObject调用,对于文件数过多的场景性能显著提升。 新增系统表PG_DB_FILE用于存储OBS文件的文件信息。 新增视图GET_TABLESPACE_OBS_FILE、PGXC_GET_TABLESPACE_OBS_FILE用于获取上一个表空间的PG_DB_FILE系统表上的全部文件信息。 高安全 审计日志增删改操作优化 审计日志增删改操作优化,补充insert overwrite、exchange partition等审计项。 - 审计日志转储OBS使用新机制 审计日志转储OBS使用新机制,避免极端场景部分丢失的问题。 - 湖仓一体 外表Analyze统计信息对接完善 外表Analyze统计信息对接完善,支持date类型等。 - 外表查询分区剪枝能力增强 外表查询分区剪枝能力增强,支持目录剪枝、元数据服务剪枝、分区信息剪枝三种方式。 - 运维&监控 在线扩容增强 V3表(带索引)、Delta表支持在线模式扩容重分布,业务可完全在线,约束与V2表相同。 集群扩容 查询过滤器增强 查询过滤器支持SQLHash方式的黑名单功能。 使用DWS查询过滤器拦截慢SQL 查询过滤器在已有规则拦截基础上,继续增加资源池切换、并发控制、限流可配置等场景能力,优化异常SQL过滤处理的灵活性。 Plan Management增强 Plan Management支持skew hint。 plan management TopSQL视图增强 在TopSQL视图显示作业不能路由到弹性逻辑原因,新增视图显示每个逻辑集群运行结束的语句数量。 GS_WLM_SESSION_INFO、GS_WLM_SESSION_HISTORY、PGXC_WLM_SESSION_INFO、GS_WLM_SESSION_STATISTICS等视图新增语句事务ID号gxid、语句增删改查对应的inserted_rows、deleted_rows、updated_rows、returned_rows等字段。 优化资源池管理白名单使用方式 优化资源池管理白名单使用方式,支持全匹配模式,放开spring的连接探活语句‘SELECT 1’以及SHOW/DISCARD/commit/rollback等语句。 - 优化分区统计信息 优化分区统计信息,合并执行时间,性能提升1倍。 - Vacuum full优化 Vacuum full支持与并发业务互相让锁,可识别让锁优先级,并支持按事务块细化让锁操作。 - 自增分区优化 自增分区调度优化等锁让锁机制,解决自动增删分区的锁超时问题,管理面提供业务优先级配置能力。 - 智能运维 智能运维调度器优化自动vacuum full表调度顺序,解决vacuum full时磁盘不足自动放弃,脏页/小CU/冷分区或Obs表不处理等磁盘过载问题。 管理运维计划 支持V3表跨VW执行autovacuum 支持V3表跨VW执行autovacuum,不占用主VW资源。 - 非PCK表支持触发异步排序 非PCK表支持触发异步排序,替代小cu合并功能。 - 其他优化 升级行为变更 升级过程用户自定义对象不会再被级联删除。 -
  • 9.1.0.102补丁(2024年9月25日) 该版本为补丁版本,主要修复已知问题。 【升级收编】 支持9.0.3版本升级到9.1.0系列。 【修复已知问题】 存算分离版本支持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.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.100版本(2024年8月12日) 【弹性架构】 架构升级:基于华为云 对象存储服务 OBS,推出存算分离架构3.0,计算、存储分层弹性,存储按需收费,降本增效;计算支持多VW(Virtual Warehouse,逻辑集群,以下简称VW)部署,业务隔离性更好,解决业务间的资源争抢问题。 推出弹性VW特性,弹性VW完全无状态,支持读写加速,灵活应对并发处理能力不足、业务波峰波谷不均衡、数据加载和数据分析资源争抢等问题,详情参见弹性增删逻辑集群。 增删DN节点,支持弹性扩容和经典扩容,弹性扩容不会对OBS上的数据进行重分布,经典扩容会重分布所有数据,系统会根据bucket总数和DN数目,自动决定采用何种扩容方式。 存算分离架构(DWS 3.0)通过磁盘缓存和IO异步读写提升性能,在磁盘缓存全命中时,持平存算一体架构(DWS 2.0)。 图1 存算分离架构
  • 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.220补丁(2025年7月) 该版本为受限补丁版本,主要修复以下问题: 表3 9.1.0.220补丁新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 无 - - - 解决问题 删除status关键字。 9.1.0.220后status不再作为DWS关键字。 9.1.0.220以前版本 升级到9.1.0.220及以上版本 使用UNUSABLE LOCAL INDEXES的场景下,清理历史分区索引后无法进行UPSERT操作。 UPSERT语句在优化器里检查所有分区的索引是否有效,有一个UNUSABLE则报错。 9.1.0.220以前版本 审计日志线程启动失败导致会话连接堆积。 审计日志线程没有启动时,将线程状态g_auditThreadActive设置成活跃,审计日志的无锁队列写满时,业务SQL就会等待审计日志写入无锁队列而产生阻塞。 9.1.0.220以前版本 细粒度备份期间drop临时表报错could not open relation with OID。 根据现场堆栈分析,该volatile表具有对应的toast表和toast索引。在结束session时,系统会尝试对volatile表、toast表和toast索引进行DROP操作。 在执行DROP INDEX过程中,会在trace表中记录GsStatOpTraceAddTuple操作,再利用index的oid做relation_open操作。 但GsStatOpTraceAddTuple的调用发生在DeleteAttributeTuples(indexId)及DeleteRelationTuple之前,因此主线操作本身不会出现问题。 但是DeleteAttributeTuples(indexId)之后,所有这个index的相关信息已被删除,导致后续操作失败,从而造成volatile表的DROP操作无法完成。 9.1.0 schema级容灾恢复失败,报解压元数据失败错误。 细粒度备份时会在编号最小的cn节点上生成extra_dump文件夹(用于存放database和role等dump信息)。 在做异构恢复的时候,master节点可能与备份的master节点不一致,且不为cn编号最小节点,这就需要下载两遍metadata文件,确保dump文件和extra_dump文件均会被正常下载。 对于OBS备份,metadata会下载到恢复指定的--metadata-destination目录。 对于XBSA接口的备份,metadata会下载到恢复指定的--metadata-destination目录的父目录。 因为对于OBS备份来说,metadata多一级cluster-unique-id的目录,所以在下载metadata后,查找压缩包需要按media-type区分。 8.2.1版本
  • 9.1.0.215补丁(2025年3月) 该版本为补丁版本,主要修复以下问题: 表5 9.1.0.215补丁新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 无。 - - - 解决问题 智能运维调度触发下盘。 智能运维调度器在查询表大小时,通过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启动集群分为两个阶段: 检查各个节点状态,需要pssh连接到各个节点进行检查。 删除启停文件,需要pssh连接到各个节点进行删除。 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