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日
新增功能
特性分类 |
特性描述 |
描述 |
参考文档 |
---|---|---|---|
SQL功能 |
记录表对象最近一次访问时间 |
|
|
安全 |
对接OneAccess认证 |
|
|
易用性 |
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 |
残留文件清理 |
新增以下扫描残留文件函数:
|
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新增) |
|
|
兼容性 |
整数相除结果兼容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语法选项:
|
SQL语法参考>ALTER INDEX/ALTER TABLE/REINDEX |
实时数仓 |
Hstore binlog表支持扩容重分布 (8.3.0.100新增) |
新增GUC参数binlog_consume_timeout,用于控制在线扩缩容binlog表时,循环判断binlog记录是否都被消费的超时时间。 |
开发指南>实时数仓>实时数仓GUC参数 |
行为变更
变更类型 |
序号 |
名称 |
变更描述 |
---|---|---|---|
删除 |
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语法
变更类型 |
序号 |
名称 |
变更描述 |
---|---|---|---|
修改 |
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状态的索引。 |
系统表
变更类型 |
序号 |
名称 |
变更描述 |
---|---|---|---|
修改 |
1 |
pg_stat_object |
将预留字段extra1改名为last_autovacuum_csn。 |
2 |
gs_wlm_session_info |
增加parse_time字段。 |
|
3 |
pg_job_info |
新增列jobdb,用于存储job所在库信息。 |
系统函数
变更类型 |
序号 |
名称 |
变更描述 |
---|---|---|---|
新增 |
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 |
废弃系统函数日落。 |
系统视图
变更类型 |
序号 |
名称 |
变更描述 |
---|---|---|---|
新增 |
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参数
变更类型 |
序号 |
名称 |
变更描述 |
---|---|---|---|
新增 |
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语法开关打开后的两种不同行为:
|
|
修改 |
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改写。 |