更新时间:2024-11-05 GMT+08:00

8.3.0.100版本新增功能

8.3.0.x版本新增功能参见新增功能,各补丁解决问题列表参见8.3.0.x补丁新增功能及解决问题

【V8.3.0.110版本发布时间】2024年10月26日

【V8.3.0.108版本发布时间】2024年7月22日

【V8.3.0.105版本发布时间】2024年7月10日(白名单用户)

【V8.3.0.103版本发布时间】2024年6月10日(白名单用户)

【V8.3.0.101版本发布时间】2024年4月25日(白名单用户)

【V8.3.0.100版本发布时间】2024年4月17日

新增功能

表1 8.3.0特性变更

特性分类

特性描述

描述

参考文档

SQL功能

记录表对象最近一次访问时间

  • 新增enable_save_dataaccess_timestamp参数控制是否记录表的最后一次访问时间。
  • PGXC_STAT_OBJECT视图新增字段last_reference_timestamp,可查询表的最后一次访问时间。
  • 新增函数pg_stat_get_all(regclass)和pgxc_stat_get_all(regclass),返回表在CN上pg_stat_object中对应的tuple记录。
  • 开发指南>GUC参数>运行时统计>查询和索引统计收集器
  • 开发指南>系统表和视图>系统表>PGXC_STAT_OBJECT视图
  • SQL语法参考>函数和操作符>统计信息函数

安全

对接OneAccess认证

  • PG_AUTHID的rolauthinfo字段新增“OneAccess认证”。
  • AUTHINFO 'authinfo'参数补充“在支持OneAccess认证方式时,authinf必须有oneaccessClientId和domain信息,满足'oneaccessClientId=xxxx,domain=xxxx'格式”。
  • 开发指南>系统表>PG_AUTHID
  • SQL语法参考>DDL语法>CREATE ROLE

易用性

pg_job支持记录出错信息

新增PG_JOB_INFO系统表记录定时任务的执行结果信息。

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

高性能

pooler支持连接备机

新增GUC参数enable_connect_standby设置CN连接DN备机。

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

CMC

系统表、系统函数历史接口日落

通过日落计划了解产品演进方向,改善产品体验,提升产品可靠性、易用性。

新增章节“元数据日落说明”汇总了日落的视图和函数

HA

运维视图增强

新增函数:

1.pgxc_get_xlog_stats(),在CN上执行,统计各个DN节点自开机到当前不同xlog类型数量。

2.pgxc_get_wal_speed(),在CN上执行,获取每一个DN实例的wal生成速率以及备DN receive、write、flush、redo速率。

3.pg_xlog_display_one_lsn(start_lsn),可以在CN或者DN上执行,根据起始LSN号完整解析当前位置的xlog。

4.pg_xlogdump (tablename),可以在CN或者DN上执行,根据表名解析xlog文件并过滤。

5.pg_xlogdump (xid),可以在CN或者DN上执行,根据事务id号解析xlog文件并过滤。

6.pg_xlogdump (start_lsn, end_lsn),可以在CN或者DN上执行,根据起始和终止lsn解析xlog文件。

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

HA

残留文件清理

新增以下扫描残留文件函数:

  • pg_scan_residualfiles()
  • pgxc_scan_residualfiles(query_flag)
  • pg_get_scan_residualfiles()
  • pgxc_get_scan_residualfiles(query_flag)
  • pg_archive_scan_residualfiles()
  • pgxc_archive_scan_residualfiles(query_flag)
  • pg_rm_scan_residualfiles_archive()
  • pgxc_rm_scan_residualfiles_archive(query_flag)

SQL语法参考>函数和操作符>残留文件管理函数>扫描残留文件函数

高性能

列存CU二级分区

新增参数secondary_part_column和secondary_part_num,用来指定列存表二级分区列的列名和数量。

开发指南>实时数仓>实时数仓语法>CREATE TABLE

高性能

支持表级oldestxmin

新增GUC参数enable_table_level_oldestxmin,控制是否开启表级oldestxmin特性。

新增GUC参数old_txn_threshold,计算表级oldestxmin时,运行超过此参数的事务被认定为长事务。

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

外表

sql on hudi

新增Hudi系统函数hudi_set_sync_commit,用于设置Hudi自动同步任务起点时间戳。

新增参数cow_improve,针对COPY_ON_WRITE表的优化,仅支持format为hudi时指定。

SQL语法>函数与操作符>Hudi系统函数

SQL语法>DDL语法>CREATE FOREIGN TABLE (SQL on OBS or Hadoop)

分布式死锁检测

新增GUC参数enable_global_deadlock_detector和

global_deadlock_detector_period,控制分布式死锁检测功能的开启以及检测周期间隔。

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

实时查询

bitmap 索引

新增表级参数enable_hstore_opt、enable_hstore_opt。

SQL语法参考>DDL语法>CREATE TABLE

实时查询

字典编码

新增GUC参数enable_dict_plan、dict_plan_distinct_limit、dict_plan_duplicate_ratio、enable_cu_predicate_pushdown。

新增字典编码的hint。

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

性能调优>使用plan hint进行调优

实时查询

近似计算:基于hll算法实现列存近似计算向量化函数

新增approx_count_distinct(col_name)函数。

新增GUC参数approx_count_distinct_precision,表示HyperLogLog++ (HLL++)算法中分桶个数,可以用来调整approx_count_distinct聚集函数的误差率。

SQL语法参考>函数和操作符>聚集函数

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

实时查询

精确计算:参考unique算子,一次扫描和聚集计算得到多列count distinct结果(含roaring bitmap)

新增uniq函数。

SQL语法参考>函数和操作符>聚集函数

实时查询

子计划支持向量化

新增GUC参数vector_engine_strategy,用于控制向量化增强策略。

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

SQL

支持漏斗函数、留存函数

新增漏斗函数window_funnel、retention、range_retention_count、range_retention_sum。

SQL语法参考>函数和操作符>漏斗和留存函数

SQL

DWS支持作业反压机制

新增GUC参数max_queue_statements,设置排队作业的最大排队长度。

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

SQL

查询结束锁释放功能

新增GUC参数enable_release_scan_lock,控制SELECT语句是否在语句执行结束后将一级锁释放。

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

SQL

复制表专项

GUC参数behavior_compat_options新增disable_update_returning_check。

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

可复制性

cast函数四舍五入规则优化

GUC参数behavior_compat_options新增选项。enable_banker_round,控制数值类型舍入行为使用四舍五入还是银行家算法。

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

SQL

string_agg行为兼容

GUC参数behavior_compat_options新增选项enable_full_string_agg。

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

导入导出

ORC三方库升级及性能优化

新增GUC参数dfs_max_memory,用于设置orc导出时能占用的最大内存。

开发指南>GUC参数>资源消耗>内存

分区管理

copy语句下盘优化

新增GUC参数default_partition_cache_strategy,控制分区缓存的默认策略。

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

实时数仓

hstore表优化批量upsert

新增GUC参数enable_hstore_keyby_upsert,控制hstore表对于批量upsert的特定优化。

开发指南>实时数仓>实时数仓GUC参数

分区管理

自动管理功能自减分区操作阻塞实时入库

新增函数pg_partition_management_time,用于修改自增分区任务调用时间。

SQL语法参考>函数和操作符>

数据库对象函数>分区管理函数

实时查询

Turbo引擎(8.3.0.100新增)

  • 新增表级参数enable_turbo_store,用于控制是否创建为turbo表,该参数只对列存表有效。
  • 新增GUC参数turbo_engine_version,对于建表指定turbo存储格式表,且当查询只涉及单表agg查询场景(查询计划中仅涉及Scan/Stream/Hash Agg/Sort算子)时,执行器可走turbo执行引擎。
  • SQL语法参考> DDL语法> CREATE TABLE
  • 开发指南> GUC参数 > 查询规划 > 优化器方法配置

兼容性

整数相除结果兼容PG(8.3.0.100新增)

GUC参数behavior_compat_options新增选项enable_int_division_by_truncate,控制整数除法行为结果集输出整数还是浮点数,行为兼容PG或者兼容ORA。

开发指南>GUC参数>版本和平台兼容性

兼容性

控制case when条件中含有返回为多结果集函数(8.3.0.100新增)

GUC参数behavior_compat_options新增选项unsupported_set_function_case,

控制是否支持case when条件中含有返回为多结果集函数。

开发指南>GUC参数>版本和平台兼容性

兼容性

窗口函数last_value支持ignore nulls功能(8.3.0.100新增)

LAST_VALUE函数支持IGNORE NULLS语法。

SQL语法参考>函数和操作符>窗口函数

性能

LEFT JOIN估算(8.3.0.100新增)

新增GUC参数left_join_estimation_enhancement,控制left join的行数估计值是否采用优化后的值。默认值:off

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

SQL语法增强

列存索引区索引清理与重建

(8.3.0.100新增)

新增WITHOUT UNUSABLE语法选项:

  • ALTER INDEX index_name REBUILD [ PARTITION partition_name ] [WITHOUT UNUSABLE ]
  • ALTER TABLE REBUILD PARTITION partition_name [ WITHOUT UNUSABLE ]
  • REINDEX { INDEX | [INTERNAL] TABLE } name [ FORCE | WITHOUT UNUSABLE ]
  • REINDEX { INDEX | [INTERNAL] TABLE } name PARTITION partition_name [ FORCE | WITHOUT UNUSABLE ]

SQL语法参考>ALTER INDEX/ALTER TABLE/REINDEX

实时数仓

Hstore binlog表支持扩容重分布

(8.3.0.100新增)

新增GUC参数binlog_consume_timeout,用于控制在线扩缩容binlog表时,循环判断binlog记录是否都被消费的超时时间。

开发指南>实时数仓>实时数仓GUC参数

行为变更

表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状态。

SQL语法

表3 SQL语法

变更类型

序号

名称

变更描述

修改

1

CREATE TABLE

支持场景:create <普通表> like <分区表> INCLUDING INDEXES;修改了创建索引语句的判断逻辑,用实际创建表的类型而不是like表的类型来设置索引的类型。

新增

2

last_value ignore nulls语法

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

3

ALTER INDEX index_name REBUILD [ PARTITION partition_name ] [WITHOUT UNUSABLE ]

unusable索引重建语法增强。

4

ALTER TABLE REBUILD PARTITION partition_name [ WITHOUT UNUSABLE ]

unusable索引重建语法增强。

5

REINDEX { INDEX | [INTERNAL] TABLE } name [ FORCE | WITHOUT UNUSABLE ]

unusable索引重建语法增强。

6

REINDEX { INDEX | [INTERNAL] TABLE } name PARTITION partition_name [ FORCE | WITHOUT UNUSABLE ]

unusable索引重建语法增强。

7

CREATE INDEX ... [ UNUSABLE ] ... PARTITION index_partition_name [ UNUSABLE ]

支持创建unusable状态的索引。

系统表

表4 系统表

变更类型

序号

名称

变更描述

修改

1

pg_stat_object

将预留字段extra1改名为last_autovacuum_csn。

2

gs_wlm_session_info

增加parse_time字段。

3

pg_job_info

新增列jobdb,用于存储job所在库信息。

系统函数

表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

废弃系统函数日落。

系统视图

表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

job_queue_naptime

设置触发调度任务检查的时间间隔及任务线程启动的超时时间,默认1s。

6

approx_count_distinct_precision

该参数表示HyperLogLog++ (HLL++)算法中分桶个数,可以用来调整approx_count_distinct聚集函数的误差率。桶的个数会影响distinct值估算的精度,桶的个数越多,误差越小。默认值17。

7

llvm_compile_expr_limit

限制LLVM表达式最大编译个数。

8

llvm_compile_time_limit

LLVM编译时间在执行器运行时间中的占比超过llvm_compile_time_limit所设置的阈值,说明LLVM编译时间占比过高,生成告警提示。

9

max_opt_sort_rows

控制order by子句中最大优化的limit+offset行数。如果超过这一行数,走原逻辑,小于这个行数走优化后逻辑。默认设为0,即默认走原逻辑。

10

dfs_max_memory

设置orc导出时能占用的最大内存。默认值262144KB。

11

default_partition_cache_strategy

控制分区缓存的默认策略。

12

enable_connect_standby

设置CN是否连接DN备机。仅适用于运维操作。

13

enable_stream_sync_quit

设置stream计划结束时,stream线程是否同步退出。默认关闭,实现sync quit不阻塞。

14

full_group_by_mode

用于控制disable_full_group_by_mysql语法开关打开后的两种不同行为:

  • nullpadding表示对于非聚集列而言,对该列NULL值进行填充,取该列非NULL值,结果集可能为不同行。
  • notpadding表示对于非聚集列而言,不处理NULL值,取该行整行数据,非聚集列结果集为随机的一行。

修改

15

behavior_compat_options

新增选项alter_distribute_key_by_partition,控制ALTER TABLE修改分区表分布列时INSERT INTO是否按分区执行。

16

behavior_compat_options

新增选项enable_full_string_agg,控制string_agg(a, delimeter) over (partition by b order by c)场景行为,采用窗口内的全量聚合逻辑还是增量聚合逻辑。

17

behavior_compat_options

新增选项unsupported_set_function_case,控制是否支持case when条件中含有返回为多结果集函数。

18

behavior_compat_options

新增选项enable_unknown_datatype。在未设置时,不允许用户创建存在unknown类型列的表。

19

behavior_compat_options

新增选项enable_whole_row_var。针对使用表名做表达式场景(SELECT T FROM T,或SELECT .... FROM T GROUP BY T),未设置enable_whole_row_var选项时,在parse阶段,对该类场景进行拦截,报错处理。

20

time_track_strategy

参数由USERSET级别修改为SIGHUP级别,内核层面默认修改为timer,可以通过管理控制台设置为tsc。

21

rewrite_rule

控制在重写时是否走case when改写。