更新时间:2024-06-14 GMT+08:00

8.2.1版本新增功能

8.2.1.x版本(仅限白名单用户发布)新增功能参见8.2.1版本新增功能,各补丁解决问题列表参见8.2.1.x补丁新增功能及解决问题

【V8.2.1.223版本发布时间】2024年6月

【V8.2.1.220版本发布时间】2024年4月

【V8.2.1.119版本发布时间】2024年2月

【V8.2.1.100版本发布时间】2023年5月

新增功能

表1 8.2.1特性变更

特性

描述

参考文档

资源管理功能易用性提升:新增全局内存管控调节机制、TopSQL新增语句类型及新增视图查询不同DN所占磁盘空间大小的倾斜率。

  • 新增GUC参数enable_global_memctl控制是否开启全局内存管理功能。
  • 支持记录stmt_type,便于对SQL进行聚类分析。
  • 新增视图PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS视图展示当前库中表的数据分布倾斜情况。
  • 开发指南>GUC参数>负载管理
  • 开发指南>系统表和视图>系统视图>GS_WLM_SESSION_HISTORY/GS_WLM_SESSION_STATISTICS新增字段stmt_type,显示语句对应的查询类型。
  • 开发指南>系统表和视图>系统视图>PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS

基于资源池支持网络IO管控

  • 新增enable_libcomm_schedule参数控制是否开启网络管控。

    新增low_priority_bandwidth参数设置低优队列可以占用的网络带宽上限,用于低优队列网络流控。

  • 以下系统表和系统视图中新增字段send_speed和recv_speed监控周期内网络发送/接收平均速率

    系统表:

    GS_RESPOOL_RESOURCE_HISTORY

    GS_WLM_USER_RESOURCE_HISTORY

    系统视图:

    GS_RESPOOL_RESOURCE_INFO

    PG_TOTAL_USER_RESOURCE_INFO

    PGXC_RESPOOL_RESOURCE_INFO

    PGXC_RESPOOL_RESOURCE_HISTORY

    PGXC_TOTAL_USER_RESOURCE_INFO

    PGXC_WLM_USER_RESOURCE_HISTORY

  • ALTER EXCEPT RULE/CREATE EXCEPT RULE语法格式补充“ | BANDWIDTH = VALUE,| ACTION = ['abort' | 'penalty'] ”参数bandwidth设置作业执行可使用的最大网络带宽。
  • ALTER RESOURCE POOL/CREATE RESOURCE POOL语法格式补充 | weight=bandwidth_weight,参数weight设置资源池网络带宽权重。
  • 开发指南>GUC参数>资源管理
  • 开发指南>系统表和视图
  • SQL语法>DDL语法>ALTER EXCEPT RULE/CREATE EXCEPT RULE
  • SQL语法>DDL语法>ALTER RESOURCE POOL/CREATE RESOURCE POOL

异常规则(单SQL限资源)

  • PG_RESOURCE_POOL新增字段short_acc、except_rule和weight
  • GS_WLM_SESSION_HISTORY/GS_WLM_SESSION_STATISTICS新增except_info显示语句触发的异常规则信息。
  • 开发指南>系统表和视图>系统表>PG_RESOURCE_POOL
  • 开发指南>系统表和视图>系统视图>GS_WLM_SESSION_HISTORY/GS_WLM_SESSION_STATISTICS

topsql子语句默认打开&level设置为perf,实现对存储过程子语句的监控及存储过程内部语句的调优、问题定位。

新增GUC参数resource_track_subsql_duration设置过滤存储过程中子语句的最小执行时间。

  • 开发指南>GUC参数>资源管理
  • 开发指南>资源监控>实时TopSQL/历史TopSQL

通信能力增强,新增GUC参数conn_recycle_timeout实现空闲连接进行自动回收。

新增GUC参数conn_recycle_timeout,用于控制将CN和DN间空闲连接回收到连接池的时间间隔。

开发指南>GUC参数>连接和认证>通信库参数

支持管理员用户使用SQL函数查询进程的堆栈信息从而进行业务问题的定界和分析。

新增gs_stack()函数获取cn或dn进程的堆栈信息。

SQL语法>函数和操作符>统计信息函数

复杂场景路径剪枝优化

  • 新增GUC参数prefer_hashjoin_path,控制是否优先生成hashjoin路径。
  • guc hint支持的配置参数新增prefer_hashjoin_path。
  • 开发指南>GUC参数>查询规划>优化器方法配置
  • 开发指南>优化查询性能>改进查询>使用Plan Hint进行调优>配置参数的hint

perf级别的topSQL优化

  • 新增GUC参数time_track_strategy,设置当前会话算子执行时间收集采用的策略。
  • 新增视图show_tsc_info、show_all_tsc_info、get_tsc_info、get_all_tsc_info,查询当前节点及所有节点的TSC信息。
  • 新增tsc信息相关函数show_tsc_info()、get_tsc_info()、test_tsc_info,查询当前节点及所有节点的TSC信息。
  • 开发指南>GUC参数>资源管理>time_track_strategy
  • 开发指南>系统表和系统视图>系统视图
  • SQL语法>函数和操作符>系统管理函数>其他函数

多count(distinct)支持share scan

  • 新增GUC参数stream_ctescan_pred_threshold,控制CTE中至少包含的过滤条件个数。
  • 新增GUC参数stream_ctescan_max_estimate_mem,控制CTE的最大估算内存值。
  • 新增GUC参数stream_ctescan_refcount_threshold,控制CTE的最大引用次数。

开发指南>GUC参数>查询规划>其他优化器选项

指定分区的插入删除和更新

  • GUC参数behavior_compat_options新增兼容选项deparse_view_with_partition,控制视图定义是否含有partition子句。
  • DELETE、INSERT、UPDATE语法格式新增partition_clause子句,对指定分区进行删除、插入、更新。
  • 开发指南>GUC参数>其他参数>behavior_compat_options
  • SQL语法>DML语法

GROUP BY 后不需体现所有非聚合函数查询字段

GUC参数behavior_compat_options新增disable_full_group_by_mysql选项,控制查询中GROUP BY后是否可以不体现所有非聚合函数查询字段。

开发指南>GUC参数>其他参数>behavior_compat_options

完善DISCARD功能

语法格式新增关键字{ ALL | TEMP | TEMPORARY | PLANS | SEQUENCES },释放所有与当前会话相关的临时资源、当前会话中所有临时表的相关资源、缓存的查询计划、缓存的所有序列相关的状态。

SQL语法>DDL语法>DISCARD

新增接口函数read_global_var

新增接口函数read_global_var,用于读取全局变量当前的设置值。

SQL语法>函数和操作符>系统管理函数>配置设置函数

skew倾斜值比对优化

支持explain打开Detail开关时,执行计划中会显示倾斜值比对耗时

SQl>DML语法>EXPLAIN

postgis升级

  • 新增PostGIS-3.2.2版本安装方法。
  • PostGIS3.2.2暂不支持raster相关功能。
  • PostGIS 3.2.2依赖第三方开源软件:

    Geos-3.11.0、Proj-6.0.0、Json 0.12.1、Libxml2 2.7.1、Sqlite3

  • 新增PostGIS3.2.2支持的操作符和函数列表。
  • 开发指南>PostGIS Extension>PostGIS概述
  • 开发指南>PostGIS Extension>PostGIS安装
  • 开发指南>PostGIS Extension>PostGIS支持和限制

pgxc_wlm_session_statistics和explain SQL支持unique_sql_id

视图GS_WLM_SESSION_HISTORY新增字段unique_sql_id,表示归一化的Unique SQL ID。

开发指南>系统视图>GS_WLM_SESSION_HISTORY

将IN/ANY/ALL条件生成的Array类型拆分为普通表达式执行

新增GUC参数enable_array_optimization,控制是否将IN/ANY/ALL条件生成的Array类型拆分为普通表达式执行。

开发指南>GUC参数>查询规划>其他优化器选项

多count(distinct)重写优化,支持包含volatile函数的重写

GUC参数volatile_shipping_version参数新增取值,默认值从2改为3

开发指南>GUC参数>查询规划>其他优化器选项

去除倾斜优化值最多10个的限制

新增GUC参数max_skew_num,控制优化器允许进行重分布优化的倾斜值个数。

开发指南>GUC参数>查询规划>其他优化器选项

优化协同分析外表部分条件下推

GUC参数behavior_compat_options新增选项disable_gc_fdw_filter_partial_pushdown,协同分析外表(类型为gc_fdw)场景下,控制使用过滤条件查询外表数据时过滤条件的下推情况。

开发指南>GUC参数>查询规划>其他优化器选项

协同分析算子增加数据集校验

新增GUC参数gc_fdw_verify_option,在协同分析特性中,控制是否启用结果集行数校验逻辑。

开发指南>GUC参数>开发人员选项

truncate、exchange与select并发

GUC参数ddl_select_concurrent_mode选项更新,修改默认值为none,新增选项exchange,参数类型由单枚举类型修改为多枚举类型,可同时设置多个值,不同值之间可以用逗号隔开。

该特性主要解决数据量较大或复杂查询的场景中,查询语句持续时间过长,阻塞DDL的场景,与Oracle效果一致。

支持场景:

  • 支持truncate和select并发;
  • 支持exchange和select并发;

场景约束:

  • 与高级别的锁冲突(大于1级),不支持并发(比如autoanalyze_mode=normal时,同时select触发了autoanalyze);
  • 与事务块中的锁冲突,不支持并发;

DWS常用连接方式约束:

  • jdbc、odbc、python驱动时,如果程序设置了autocommit = false,不支持该特性;
  • Data Studio下发的所有查询语句,自动起事务,不支持该特性;

开发指南>GUC参数>锁管理

GTM线程池优化提高GTM处理高并发的能力

新增GUC参数gtm_option、defer_xid_cleanup_time、

、gtm_enable_threadpool和gtm_num_thread

开发指南>GUC参数>集群事务

开发指南>GUC参数>GTM相关参数

DWS导出空表到xsky S3,支持生成空文件

新增参数obs_null_file,用于dws和obs之间空文件导入导出的处理。

SQL语法>DDL>CREATE FOREIGN TABLE (OBS导入导出)

autovacuum易用性提升

  • 新增GUC参enable_pg_stat_object控制autovacuum是否更新系统表。
  • 新增系统表PG_STAT_OBJECT存储当前实例上表的统计信息和autovacuum效率信息。
  • 系统视图PGXC_STAT_OBJECT显示集群中所有实例的表的统计信息和autovacuum效率信息。

开发指南>GUC参数>自动清理

开发指南>系统表和系统视图>系统表>PG_STAT_OBJECT

开发指南>系统表和系统视图>系统视图>PGXC_STAT_OBJECT

列存表索引扫描代价优化

(8.2.1.100)

新增GUC参数index_selectivity_cost控制列存表索引扫描时cbtree的cost计算。

开发指南>GUC参数>查询规划>优化器方法配置

列存delta表autovacuum锁升级,解决adms入库报错问题。

新增GUC参数enable_mergelock_upgrade,控制列存delta表在merge时从4级锁升级到7级锁,避免和业务并发产生报错。

开发指南>GUC参数>锁管理

列存表不指定索引类型默认创建btree索引

新增GUC参数default_table_behavior,支持默认表的行为类型。

开发指南>GUC参数>开发人员选项

资源监控DFX视图(8.2.1.100)

新增视图:

GS_QUERY_MONITOR视图显示正在执行的查询运行/排队信息及资源使用信息,只显示排队和正在运行的作业。

GS_RESPOOL_MONITOR视图显示所有资源池作业运行信息及资源使用信息。

GS_USER_MONITOR视图显示所有用户作业运行信息及资源使用信息。

开发指南>系统表和系统视图>系统视图

TopSQL监控新增PBE批量使用情况下新增bind监控(8.2.1.100)

对于未下盘的主语句,TopSQL历史表中的记录会有延时,等待下条作业下发时才会显示在TopSQL历史表中。

GS_WLM_SESSION_HISTORY/GS_WLM_SESSION_STATISTICS视图中query_plan字段补充规格限制:1.DML语句都会进行显示执行计划,DDL语句不显示执行计划。2.当用户下发PBE(Parse Bind Execute)批处理语句时,为批处理的PBE语句的执行计划添加数据绑定次数,显示为PBE bind times:%格式。

开发指南>资源监控>实时TopSQL

开发指南>系统表和系统视图>系统视图>GS_WLM_SESSION_HISTORY/GS_WLM_SESSION_STATISTICS视图

comm_max_stream支持动态设置

(8.2.1.100)

GUC参数comm_max_stream参数类型由POSTMASTER修改为SIGHUP;取值范围由1-60000修改为1~65535;默认值修改为1024

开发指南>GUC参数> 连接和认证> 通信库参数

审计日志增强(8.2.1.100),增加 object对象名、字段名、操作类型、返回记录数、错误代码记录列。

  • 新增GUC参数audit_object_details控制审计日志中是否记录object_details字段,该字段为审计语句中的表名、列名以及列使用的类型
  • pg_query_audit()函数新增字段object_details记录语句中涉及的列及其使用类型;result_rows字段语句执行返回的记录数;error_code语句执行错误时的错误码。

    新增函数:pg_query_audit_details()查看审计日志并将审计日志中的object_name和object_details字段由json格式解析出来。

  • 开发指南>GUC参数>审计>审计开关
  • SQL语法参考>函数和操作符>安全函数

数据脱敏单表支持多策略(8.2.1.100)

  • REDACTION_COLUMNS视图新增字段policy_name所属的脱敏策略名称;PG_REDACTION_COLUMN系统表新增字段policy_oid表示所属脱敏策略OID,用于查询时直接从系统表元数据检索脱敏列信息; PG_REDACTION_POLICY系统表新增字段policy_order表示脱敏策略次序。
  • CREATE REDACTION POLICY新增参数AFTER | BEFORE,指定当前策略创建的相对位置
  • 开发指南>系统表和系统视图REDACTION_COLUMNS/PG_REDACTION_COLUMN/PG_REDACTION_POLICY
  • SQL语法参考>DDL语法>CREATE REDACTION POLICY

SQL ON HUDI(8.2.1.100)

新增SQL on hudi场景化操作流程以及Hudi相关的系统函数。当前使用CDL将Hudi数据同步到DWS内表。DWS支持Hudi方式存储的数据后,通过自定义同步任务,将数据主动同步到DWS内表中。

  • 开发指南>SQL on Hudi
  • SQL语法参考>函数和操作符>Hudi系统函数

列存autovacuum优化1GB限制,让锁导致残留问题。(8.2.1.100)

新增GUC参数col_min_file_size,解决列存表入库操作产生大量脏数据,空间回收的约束为文件必须超过1GB,没有超过1GB无法触发空间回收的问题。

开发指南>GUC参数>自动清理

GB18030编码升级(8.2.1.100)

参数encoding的说明中新增常用编码格式说明。Dataencoding中新增编码格式GB18030_2022,用于解决GB18030(低版本)出库时报错的问题。

  • SQL语法参考>DDL语法>CREATE FOREIGN TABLE (GDS导入导出)
  • SQL语法参考>DML语法>COPY

core遗言工具(8.2.1.100)

新增GUC参数enable_ffic_log,在不依赖gdb工具的前提下,使用一个轻量化的日志方案快捷高效的记录coredump第一现场,为coredump问题定位、定界提供必要的信息。

开发指南>GUC参数>资源管理

Hstore表查询delta表情况视图(8.2.1.100)

新增函数pgxc_get_hstore_delta_info(rel_name text),提供快速查询delta表上的信息(各种类型记录的数量,delta表的大小等),来辅助定位问题。

开发指南>实时数仓>实时数仓函数

copy容错表修改(8.2.1.100)

  • 错误表public.pgxc_copy_error_log新增三列:columnname、errcode、queryid。
  • LOG ERRORS DATA参数 取消约束:只有supper权限的用户才能使用LOG ERRORS DATA参数。
  • 新增参数GUC参数max_copy_data_display。

DWS的copy容错表满足以下诉求:

1、解除约束:错误表原始数据rawrecord字段只有管理员用户权限才能写入。

2、对于违反not null约束的直接报错,计入错误表。

3、新增错误数据的报错字段和错误码,方便宽表入库报错定位。

  • SQL语法参考>系统管理函数>其他函数
  • SQL语法参考>DML语法>COPY
  • 开发指南>GUC参数>并行导入

冷热表增强(8.2.1.100)

新增冷热表用户函数refresh_hot_storage(text)和

refresh_hot_storage(text,text),用于将指定多温表的分区数据刷新到OBS上。

SQL语法参考>函数和操作符>数据库对象函数>冷热表用户函数

使用索引扫描(8.2.1.100)

新增GUC参数index_cost_limit,目的在于修复列存indexcost的向前兼容性,避免默认计划跳变。

开发指南>GUC参数>优化器方法配置

sql on hudi新增进程、topsql新增tsc线程(8.2.1.100)

新增GUC参数enable_dws_bigdata和dws_bigdata_directory,用来判断是否启动dws-bigdata进程,定期监视dws-bigdata进程保活机制。

开发指南>GUC参数>CM相关参数

sequence支持修改cache size(8.2.1.100)

ALTER SEQUENCE语法格式新增CACHE关键字,用来指定要预先分配多少序列号并存储在内存中以便更快地访问序列。

SQL语法参考>DDL语法>ALTER SEQUENCE

Merge分区个数放开限制(8.2.1.100)

merge_clause子句放开源分区最大个数限制。

SQL语法参考>DDL语法>ALTER TABLE PARTITION

支持Drive hint (8.2.1.210)

  • 新增GUC参数join_search_mode,标识计划路径搜索的方式。
  • 新增Drive方式的hint。
  • 开发指南>GUC参数>查询规划>其他优化器选项
  • 开发指南>性能调优>SQL调优指南>使用Plan Hint进行调优

SQL语法

表2 SQL语法

变更类型

序号

名称

变更描述

新增

1

obs_null_file

新增表级参数obs_null_file进行管控,当为on时,dws导入文件时,如果文件不存在或者路径错误,会报错。

2

replace_illegal_chars

新增gds外表option:replace_illegal_chars,用于替换0x00入库。

3

DISCARD GLOBAL TEMP [TABLE]

不指定表名,清理当前会话的所有全局临时表。指定表名时,清理当前会话的指定全局临时表。

4

ALTER SEQUENCE [ IF EXISTS ] name CACHE cache

支持修改sequence的cache值。

5

CREATE STATISTICS

为表创建一个扩展统计信息对象。

6

DROP STATISTICS

删除一个扩展统计信息。

7

ALTER STATISTICS

新增扩展统计信息的ALTER语法。

8

ALTER FUNCTION增加MASKED关键字

新增语法,用于设置函数是否支持不脱敏。

9

last_value ignore nulls语法

支持last_value ignore nulls语法在计算时忽略NULL值。

10

ALTER MATERIALIZED VIEW qualified_name OWNER TO RoleId

修改物化视图的所有者。

11

CREATE MATERIALIZED VIEW

创建物化视图。

12

ALTER MATERIALIZED VIEW

修改物化视图属性。

13

DROP MATERIALIZED VIEW

删除物化视图。

14

REFRESH MATERIALIZED VIEW

刷新物化视图。

修改

15

创建外表禁止使用UNIQUE NULLS NOT DISTINCE、UNIQUE NULLS IGNORE

外表创建的unique约束为infomational constraint,该约束并不会创建索引,因此禁掉创建外表时使用UNIQUE NULLS NOT DISTINCE、UNIQUE NULLS IGNORE。

16

试图更新参数打开时,视图上存在触发器且禁止merge into

视图上存在触发器且执行merge into时,视图不会重写,该场景禁止使用。

17

discard all、discard temp、discard sequences、discard plans

用于释放与当前会话相关的临时资源并重置到其初始状态。

18

CREATE/ALTER RESOURCE POOL

新增weight选项,设置网络权重。

19

CREATE/ALTER EXCEPT RULE

新增bandwidth异常识别和penalty异常处理行为。

20

LOCK [ TABLE ] {[ ONLY ] name [, ...]| {name [ * ]} [, ...]} [ IN <lockmode> MODE ] [ NOWAIT ] [LOCAL COORDINATOR ONLY];

8.2.0版本引入只对本地CN加锁的语法,仅支持ACCESS SHARE锁模式,此次修改后对所有的8级锁模式都支持。

21

CREATE REDACTION POLICY新增可选项[BEFORE | AFTER] old_policy_name

原CREATE REDACTION POLICY语法新增可选项[BEFORE|AFTER] old_policy_name,默认不指定,表示新策略创建在当前表对象的policy_order最大的策略之后。

22

timestampdiff()

解决了部分时间差为负值时的结果错误问题。

23

full join场景下对于volatile函数重写检查范围缩小

在多表full join场景下,由原来对于整个query树做检查改为仅对于存在于on条件后的volatile进行检查,放开部分含volatile函数的重写限制。

24

merge into

支持指定分区。

关键字

表3 关键字

变更类型

序号

名称

变更描述

新增

1

FACT

HINT语法中增加FACT关键字,导致HINT中的别名不能使用FACT。

2

LIGHT

新增LIGHT非保留关键字,用于Analyze (light) table语句,表示手动触发动态采样。

系统表

表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字段。

系统函数

表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

用于对extrenal 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字段。

系统视图

表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_ATTSTATS

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。

行为变更

表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_STATISTICS视图

GS/PGXC_WLM_SESSION_STATISTICS视图新增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

视图解耦

当访问到无效视图时,不触发自动重建动作,即不更新系统表,而是在本地展开

GUC参数

表8 GUC参数

变更类型

序号

名称

变更描述

新增

1

time_track_strategy

用于控制非向量化算子的时间统计方法,包括(tsc/vector/timer/frequency(debug模式))。

2

max_skew_num

控制优化器允许进行重分布优化的倾斜值个数。

3

disable_full_group_by_mysql

MySQL兼容模式下使用,设置后,允许GROUP BY后出现非聚合函数查询字段。

4

enable_col_index_vacuum

新增guc参数enable_col_index_vacuum,用于控制是否允许autovacuum对列存索引进行清理,默认false。

5

enable_pg_stat_object

开启后,记录pg_stat_object系统表,关闭时不记录。

6

conn_recycle_timeout

增加GUC参数conn_recycle_timeout用于控制连接回收间隔。

7

index_selectivity_cost

控制列存表索引扫描时cbtree的cost计算(选择率>0.001)。

8

default_table_behavior

控制表的默认行为,8.2.1版本前仅支持column_btree_index(列存表默认创建索引为btree)。

9

resource_track_subsql_duration

TopSQL监控,用于控制存储过程中子语句的记录,超过该GUC设置的数据的子语句才能被记录。

10

max_files_per_node

控制单节点单query打开文件的最大数量。

11

max_copy_data_display

为copy错误表rawrecord字段长度增加guc管控,表示能显示的最长字符数。

12

max_process_memory_balanced

主备均衡模式下,实例max_process_memory能取的上限。

13

index_cost_limit

控制列存表索引扫描时cbtree的cost计算(选择率>0.001),支持hint设置。

14

audit_object_details

新增参数控制审计日志中是否记录object_details列。

15

enable_fd_check

新增控制fd误关检查的参数,默认开启。

16

idle_in_transaction_timeout

为了处理在设置session_timeout=0后,可能存在的长客户空闲连接一直不退出,持有表锁不放的问题,新增事务级别的参数idle_in_transaction_timeout,对空闲事务连接设置idle超时时间:

1,user set,单位s,默认0,不开启,取值范围0-86400(一天)

2,仅对直连cn的客户连接生效,对直连dn或内部连接不予处理

3,修改该参数为非0值后,当事务处于idle状态超过所设置时间后,FATAL报错

17

enable_save_dataaccess_timestamp

新增,表级最后一次访问时间记录开关。默认关闭。

18

behavior_compat_options

behavior_compat_options参数新增check_function_shippable,开启check_function_shippable,则增加对函数ship的判断:1.外层可下推,包含DML语句:报错2.外层是shippable,内层是immutable:不报错3.外层和内层都是shippable:不报错4.外层是shippable,内层非immutable且非shippable:报错

19

enable_release_scan_lock

新增USERSET 参数enable_release_scan_lock,开启时在语句执行完释放一级锁

20

job_queue_naptime

新增参数job_queue_naptime,设置触发任务的时间间隔及超时时间,默认1s

21

enable_stream_sync_quit

新增GUC参数,默认关闭,实现sync quit不阻塞

22

behavior_compat_options增加选项enable_full_string_agg

behavior_compat_options新增enable_full_string_agg,打开该参数时,string_agg() over (partition by xx order by xxx)是在窗口内全量聚合,关闭该参数时,在窗口内递增聚合,该参数默认关闭。

23

behavior_compat_options增加选项enable_cast_hashjoin

behavior_compat_options新增enable_cast_hashjoin参数,默认关闭,打开后,JOIN条件中timestamp和timestampz等值比较时会做类型转换以支持hashjoin

修改

24

behavior_compat_options

behavior_compat_options新增参数DISABLE_SET_GLOBAL_VAR_ON_DATANODE控制全局变量不能在DN上设置。

25

hashjoin_spill_strategy

新增了两种策略5和6,它们的行为与原来的0、1策略相同。原来的0、1策略的行为已经被修改。现在,当内表过大而无法放入内存时,会继续划分内表,直到无法再划分,然后才会尝试进行内外表交换。

26

behavior_compat_options增加选项disable_gc_fdw_filter_partial_pushdown

behavior_compat_options参数增加了disable_gc_fdw_filter_partial_pushdown选项,这个选项可以控制协同分析外表中的过滤条件。当这个参数打开时,如果存在不能下推的条件,则所有条件都不会下推。当这个参数关闭时,会优化为部分下推。

27

prefer_hashjoin_path

当prefer_hashjoin_pathda打开时,会优先尝试生成hashjoin路径,这可能会导致在相同代价下的计划发生跳变。

28

volatile_shipping_version

新增取值3,控制volatile函数的下推,取值2改为replicate的CTE支持volatile函数下推,同时禁止非share scan场景下,CTE包含volatile函数的下推。

29

behavior_compat_options

新增了ignore_unshipped_concurrent_update选项,这个选项可以控制在并发更新场景下是否忽略新元组检测。

30

max_connections

最小值由1修改为100。

31

max_process_memory

可以直接设置生效,不再依赖max_process_memory_auto_adjust是否开启。

32

index_selectivity_cost

修复列存indexcost的向前兼容性,避免默认计划跳变,将参数默认值改为-1,支持hint设置。

33

behavior_compat_options

增加取值enable_pushdown_groupingset_subquery。子查询中有grouping set时,默认不能把外层条件下推到子查询中,设置为enable_pushdown_groupingset_subquery时,可下推,但需用户确保下推后结果正确。

34

comm_max_stream

comm_max_stream支持reload。

35

enable_tsdb_multi_temperature

控制时序表是否能够创建冷热表,默认值改为off。

36

enable_col_index_vacuum

修改enable_col_index_vacuum得默认值为true,默认允许autovacuum对列存索引进行清理。

37

enable_redistribute

控制查询优化器对于local redistribute和split redistribute重分布模式数据传输的使用。8.2.1版本前此参数未使用。

38

time_track_strategy

  • 内核修改默认值为timer,guc参数级别设置为sighup级别。
  • OM侧设置参数策略,升级默认timer,新安装时支持TSC则设置为TSC,否则设置为vector。

39

behavior_compat_options

新增取值enable_banker_round控制银行家算法使用。

40

behavior_compat_options

新增参数orderby_null_first控制null值在order by排序时是否为最小值,仅在TD兼容库下生效。

41

behavior_compat_options

新增参数alter_distribute_key_by_partition,设置后分区表alter table distribute by按分区进行insert into,关闭情况下保持原先行为(将分区表整表进行INSERT INTO)。

42

behavior_compat_options

新增参数enable_use_syscol_in_replicate_table,不设置该选项时,如果复制表在INSERT、UPDATE、MERGE INTO和DELETE时采用oid/ctid/tableoid/xc_node_id作为过滤条件、连接条件和having条件会报错。

43

behavior_compat_options

新增参数enable_force_add_batch,当参数support_batch_bind设置为on且参数enable_fast_query_shipping和enable_light_proxy设置为off时,GaussDB(DWS)接收addbatch模式的U报文。但是入库速度较慢,有内存不足风险,需谨慎设置该选项。

44

behavior_compat_options

behavior_compat_options参数新增disable_update_returning_check,控制复制表更新带returning行为。

45

cost_model_version

新增参数值3,表示在2的基础上,优化大集群场景下的broadcast代价估算,以便优化器选择更优计划。

46

enable_track_record_subsql

修改参数默认值为on。

删除

47

enable_grant_public

表示安全模式下不支持grant to public语法,8.2.1版本后删除该参数。

48

enable_grant_option

表示安全模式下不支持grant with grant option语法,8.2.1版本后删除该参数。