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

8.1.1版本说明

【V8.1.1.500版本发布时间】:2022年06月20日

【V8.1.1.300版本发布时间】:2022年04月15日

【V8.1.1.205版本发布时间】:2022年03月30日

【V8.1.1.203版本发布时间】:2022年03月18日

【V8.1.1.202版本发布时间】:2022年02月24日

【V8.1.1.201版本发布时间】:2022年01月25日

【V8.1.1.200版本发布时间】:2021年12月09日

【V8.1.1.100版本发布时间】:2021年07月30日

8.1.1.200、8.1.1.201、8.1.1.202、8.1.1.203、8.1.1.205、8.1.1.300、8.1.1.500与8.1.1.100的集群的数据库内核功能保持一致,仅增加管理控制台的功能适配,新适配功能请参见最新动态

新增功能

表1 8.1.1新增功能

特性

描述

参考文档

集群支持2048节点规格

支持2048集群节点数

技术指标

资源监控性能优化

  1. 新增函数pgxc_wlm_get_schema_space(cstring)和pgxc_wlm_analyze_schema_space(cstring)
  2. 新增系统视图PGXC_TOTAL_SCHEMA_INFO、PGXC_TOTAL_SCHEMA_INFO_ANALYZE和GS_WLM_SQL_ALLOW
  • 函数pgxc_wlm_get_schema_space(cstring)、pgxc_wlm_analyze_schema_space(cstring)
  • 系统视图PGXC_TOTAL_SCHEMA_INFO、PGXC_TOTAL_SCHEMA_INFO_ANALYZE、GS_WLM_SQL_ALLOW

运维调度框架(支持分段离线扩容、半在线扩容、在线扩容,以及为vacuum full、analyze、每日巡检留接口)

  1. 集群扩容内容补充数据重分布调度模式:实现数据重分布过程中的无人值守。
  2. 新增服务端工具gs_scheduler实现智能调度运维任务功能。
  1. 管理员指南>集群扩容
  2. 工具参考>服务端工具

全量build优化

  1. 通用文件访问函数新增pg_generate_file_crc(filename text, length bigint, filetype int)
  2. gs_ctl中build参数补充-t,-u,-B
  1. SQL语法参考>函数和操作符>通用文件访问函数
  2. 工具参考>系统内部使用的工具>gs_ctl

UPDATE轻量化

  1. 注意事项中新增关于列存表和列存轻量化的描述。
  2. 新增GUC参数enable_light_colupdate。
  • UPDATE
  • enable_light_colupdate

列存支持主键CU

列存表支持主键约束

  • 约束设计
  • ALTER TABLE
  • CREATE INDEX

垃圾空间管理

新增GUC参数bi_page_reuse_factor

bi_page_reuse_factor

GDS产品化

新增系统视图PGXC_BULKLOAD_PROGRESS、PGXC_BULKLOAD_STATISTICS、PG_BULKLOAD_STATISTICS

  • PGXC_BULKLOAD_PROGRESS
  • PGXC_BULKLOAD_STATISTICS
  • PG_BULKLOAD_STATISTICS

数据多温度存储特性

  1. ALTER TABLE补充REFRESH STORAGE相关描述
  2. CREATE TABLE补充COLVERSION,STORAGE_POLICY功能与描述
  3. CREATE TABLESPACE补充OBS表空间功能与描述
  • ALTER TABLE
  • CREATE TABLE

国密算法SM4 CBC模式的C函数

安全函数新增gs_encrypt(encryptstr, keystr, cryptotype, cryptomode, hashmethod)、gs_decrypt(decryptstr, keystr,cryptotype, cryptomode, hashmethod)和gs_hash(hashstr, hashmethod)

修改gs_encrypt_aes128(encryptstr,keystr)和gs_decrypt_aes128(decryptstr,keystr)的说明

安全函数

中位数median内置函数支持

新增函数median(expression)

聚集函数

存在视图的表进行级联删除功能调整

  1. 新增“重建视图”
  2. ALTER VIEW的REBUILD参数补充“基表字段类型仅支持大类(字符型、数字型、时间类型等)范围内的修改;view_independent设置为on的时候,支持视图的自动重建。”
  • 创建和管理视图
  • ALTER VIEW

支持自定义数据脱敏规则

  1. 数据脱敏内容优化
  2. 数据脱敏函数提供一系列不同脱敏形式的函数。
  3. 系统表PG_REDACTION_COLUMN和系统视图REDACTION_COLUMNS字段刷新
  4. 新增语法ALTER/CREATE/DROP REDACTION POLICY
  • 数据脱敏
  • 数据脱敏函数
  • 系统表PG_REDACTION_COLUMN、系统视图REDACTION_COLUMNS
  • ALTER REDACTION POLICY
  • CREATE REDACTION POLICY
  • DROP REDACTION POLICY

数据库用户密码到期强制更改后才能登录

  1. SQL语法参考>关键字

    修改内容:新增“EXPIRATION”非保留

  2. 新增安全函数“gs_password_expiration”;补充“gs_password_deadline密码过期后提示用户修改密码。与GUC参数password_effect_time相关。”
  3. ALTER ROLE /ALTER USER/CREATE USER语法中新增PASSWORD EXPIRATION period
  4. CREATE ROLE补充内容:声明该角色的登录密码过期天数,登录密码过期之前用户需要及时修改密码。登录密码过期后用户无法登录,需要请管理员设置新的登录密码后使用新的登录密码登录。
  5. 系统表PG_AUTHID补充字段rolauthinfo、rolpwdexpire、rolpwdtim
  • 关键字
  • 安全函数
  • ALTER ROLE、ALTER USER、CREATE USER
  • CREATE ROLE
  • PG_AUTHID

hash表适当增大处理

新增GUC参数expand_hashtable_ratio

expand_hashtable_ratio

SMP自适应默认打开

新增“SMP相关参数配置建议”

SMP相关参数配置建议

explain默认显示为pretty

修改explain默认显示为pretty格式。

新增算子中过滤及投影时间统计,显示位置与算子执行时间同行。

SQL执行计划详解

并发SMP增强

  1. 补充SMP适用限制“生成计划时间占比很高的短查询场景”
  2. 增加短查询场景,需要将query_dop设置为1的调优说明。
  3. 新增GUC参数query_dop_ratio
  • SMP适用场景与限制
  • SMP手动调优建议
  • query_dop_ratio

row2vec优化

新增GUC参数enable_row_fast_numeric

enable_row_fast_numeric

MySQL兼容性

  1. 补充concat、log(x)、left和right负数处理、int + unknown运算last_day和next_day返回类型、操作符'^'兼容性差异
  2. 关键字中新增IFNULL和TIMESTAMPDIFF
  3. 对于CASE、COALESCE、IF和IFNULL,在MySQL兼容模式下的处理
  4. behavior_compat_options选项补充兼容模式及示例
  5. SELECT/SELECT INTO/VALUES支持“[ OFFSET start [ ROW | ROWS ] ] | LIMIT start, { count | ALL } } ]”
  6. CREATE DATABASE的DBCOMPATIBILITY增加MySQL兼容
  7. 字符处理函数和操作符,补充concat(str1,str2)、left(str text, n int)、right(str text, n int)兼容性差异;数字操作函数和操作符,补充log(x) 、^的兼容性差异;时间和日期处理函数和操作符,新增timestampdiff(field, timestamp1, timestamp2) /to_days(timestamp) /data_format;条件表达式函数,新增if(bool_expr, expr1, expr2) 、ifnull(expr1, expr2)、isnull(expr)
  • Oracle、Teradata和MySQL语法兼容性差异
  • 关键字
  • UNION,CASE和相关构造
  • behavior_compat_options
  • SELECT、SELECT INTO、VALUES
  • CREATE DATABASE
  • 函数和操作符

支持UPSERT

新增语法UPSERT

INSERT语法补充IGNORE、AS、ON DUPLICATE KEY、ON CONFLICT

UPSERT

支持视图的insert、update、delete功能

CREATE VIEW新增“可更新的视图”内容

CREATE VIEW

一键式现场信息收集

EXPLAIN语法新增STATS boolean参数

EXPLAIN

一键式锁等待关系分析

  1. 新增锁信息函数pgxc_get_lock_conflicts()
  2. 新增系统视图PGXC_DEADLOCK和PGXC_LOCK_CONFLICTS
  • 系统信息函数
  • 系统视图PGXC_DEADLOCK、PGXC_LOCK_CONFLICTS

char类型空串拼接兼容

behavior_compat_option参数新增bpchar_text_without_rtrim配置项

behavior_compat_options

慢节点检测

新增告警“集群节点运行慢(ALM_AI_SLOWNODE)”

故障处理>告警参考

支持Python 3.x

支持python3

使用GDS从远端服务器导入数据

to_date与to_timestamp处理空串时返回0001-01-01,而TD返回null

  1. Oracle、Teradata和MySQL语法兼容性差异
  2. behavior_compat_options新增配置项convert_empty_str_to_null_td
  • Oracle、Teradata和MySQL语法兼容性差异
  • behavior_compat_options

支持insert overwrite

INSERT语法支持overwrite

INSERT

获得当前用户查询的全部视图

新增视图GS_VIEW_DEPENDENCY_PATH

GS_VIEW_DEPENDENCY_PATH

支持percentile_disc、percentile_cont

新增聚集函数:

percentile_disc(const) within group(order by expression)

percentile_cont(const) within group(order by expression)

聚集函数

SQL语法

表2 SQL语法

变更类型

序号

名称

变更描述

新增

1

LIMIT offset,count

支持LIMIT offset,count语法。

2

EXPLAIN(STATS ON)...

支持EXPLAIN(STATS ON)... 语法,用于导出计划复现的相关信息。

3

CREATE/ALTER/DROP REDACTION POLICY

新增脱敏DDL语法。

4

INSERT IGNORE INTO

INSERT INTO ON DUPLICATE KEY UPDATE

INSERT INTO ON CONFLICT DO UPDATE

INSERT INTO ON CONFLICT DO NOTHING

支持UPSERT功能。

5

INSERT OVERWRITE INTO

INSERT OVERWRITE覆盖导入功能。

6

ALTER TABLE REFRESH STORAGE

进行冷热表的冷热切换,将热数据变冷。

7

ALTER VIEW ONLY view_name REBUILD

alter view only viewname REBUILD。

8

ALTER SERVER REFRESH

用于HDFS配置变动时,刷新HDFS SERVER的配置文件。

修改

9

操作符^

MySQL兼容模式下处理为异或,ora/td模式为幂运算。

10

MERGE INTO

MERGE INTO语句的目标表上包含触发器时报错。

11

CREATE/ALTER Table

新增Reloptions中cold_tablespace和storage_policy冷热表相关的选项。

关键字

表3 关键字

变更类型

序号

名称

变更描述

新增

1

TIMESTAMPDIFF

新增关键字为COL_NAME_KEYWORD。

2

IFNULL

新增关键字为COL_NAME_KEYWORD。

3

REFRESH

非保留关键字。

修改

4

IF

由UNRESERVED_KEYWORD改为COL_NAME_KEYWORD。

5

ISNULL

由UNRESERVED_KEYWORD改为COL_NAME_KEYWORD。

6

VERIFY

由保留关键字变为非保留关键字。

系统表

表4 系统表

变更类型

序号

名称

变更描述

修改

1

PG_REDACTION_COLUMN

新增func_expr字段。

2

PG_AUTHID

增加rolpwdexpire和rolpwdtime字段。

系统函数

表5 系统函数

变更类型

序号

名称

变更描述

新增

1

pgxc_wlm_readjust_schema_space()

Schema空间并行校准函数。

2

pgxc_wlm_get_schema_space()

查询集群Schema空间信息。

3

pgxc_wlm_analyze_schema_space()

分析集群Schema空间信息。

4

gs_roach_enable_delay_ddl_recycle

按照备份集的名称来开启延迟DDL。

5

gs_roach_disable_delay_ddl_recycle

按照备份集的名称来关闭延迟DDL。

6

gs_roach_stop_backup

按照备份集名称停止行存备份操作。

7

gs_roach_switch_xlog

switch xlog时是否执行checkpoint。

8

pgxc_get_lock_conflicts()

返回各节点上存在冲突的锁信息。

9

mask_none/mask_full/mask_partial

新增内置脱敏函数。

10

median

中位数agg函数。

11

pgxc_node_stat_reset_time()

查询每个节点的重置时间。

12

pgxc_rel_iostat()

查询各节点IO统计信息。

13

pgxc_redo_stat()

查询各节点Redo统计信息。

14

pgxc_instance_time()

查询各实例时间统计信息。

15

pgxc_settings()

查询各节点GUC设置情况。

16

pgxc_replication_slots()

查询各节点复制slot统计信息。

17

pgxc_stat_replication()

查询各节点replication统计信息。

18

pgxc_stat_bgwriter()

查询各节点bgwriter统计信息。

19

pgxc_wait_events()

查询各节点等待事件统计信息。

20

pgxc_os_run_info()

查询各实例所在机器OS性能统计信息。

21

get_node_stat_reset_time()

查询当前节点状态重置时间。

22

get_local_rel_iostat()

查询当前节点IO统计信息。

23

get_instr_wait_event()

查询当前节点等待事件统计信息。

24

pg_stat_get_db_total_blk_write_time()

查询块写入总时间。

25

pg_stat_get_db_total_blk_read_time()

查询块读取总时间。

26

pg_stat_get_db_total_temp_bytes()

查询临时文件总大小。

27

pg_stat_get_db_total_temp_files()

查询临时文件总数。

28

pg_stat_get_db_total_deadlocks()

查询死锁总数。

29

pg_stat_get_db_total_conflict_all()

查询冲突总数。

30

pg_stat_get_db_total_tuples_deleted()

查询删除元组总数。

31

pg_stat_get_db_total_tuples_updated()

查询更新元组总数。

32

pg_stat_get_db_total_tuples_inserted()

查询插入元组总数。

33

pg_stat_get_db_total_tuples_fetched()

查询fetch元组总数。

34

pg_stat_get_db_total_tuples_returned()

查询return元组总数。

35

pg_stat_get_db_total_blocks_hit()

查询内存命中数据块总数。

36

pg_stat_get_db_total_blocks_fetched()

查询读取数据块总数。

37

pg_stat_get_db_total_xact_rollback()

查询rollback事务总数。

38

pg_stat_get_db_total_xact_commit()

查询commit事务总数。

39

pg_stat_get_db_total_numbackends()

查询当前backend总数。

40

gs_encrypt()

加密函数。

41

gs_decrypt()

解密函数。

42

gs_hash()

哈希函数。

43

gs_password_expiration()

查询当前用户的密码剩余时间(对应系统表pg_authid中的rolpwdtime和rolpwdexpire)。

44

to_char(date)

新增to_char(date)函数,兼容TD模式下to_char处理date类型时间戳的返回格式。

45

gs_wlm_set_queryband_action

设置query_band负载行为。

46

gs_wlm_set_queryband_order

设置query_band搜索优先级。

47

gs_wlm_get_queryband_action

查询query_band负载行为。

48

CONCAT

新增MYSQL兼容规则,入参含NULL则返回NULL。

49

TIMESTAMPDIFF

支持TIMESTAMPDIFF函数返回指定单位的时间差。

50

TO_DAYS

支持TO_DAYS函数返回输入时间到0的天数差

51

DATE_FORMAT

支持DATE_FORMAT函数用于将输入日期时间转化为指定格式的字符串,格式为%开头的MYSQL形式。

52

IF

实现IF函数,根据首个输入返回对应值。

53

IFNULL

实现IFNULL函数,返回首个非NULL值。

54

ISNULL

实现ISNULL函数,判断输入是否为NULL。

修改

55

pg_resume_bkp_flag

用于备份恢复获取delay ddl标志。

56

pg_query_audit

审计日志记录新增五个字段:begintime、operation_type、command_text、transaction_xid、query_id;变更原字段:将原time变更为endtime,将原type变更为audit_type。另将原detail_info下存放的操作命令移至command_text,而detail_info存放命令执行结果。

57

pg_delete_audit

基于安全考虑,不允许提供删除审计日志的接口,调用此函数将直接报错。

58

log()

对数函数,ora/td模式下表现为底为10的对数,mysql兼容模式下表现为自然对数。

59

to_number

to_number函数原来调用numeric_in函数,现修改成调用to_number函数,兼容TD模式下to_number函数空串处理返回null。

60

left()

字符串截取,当入参是负数时,ora/td模式下返回除最后|n|个字符以外的所有字符,mysql兼容模式下返回空串。

61

right()

字符串截取,当入参是负数时,ora/td模式下返回除前|n|个字符以外的所有字符,mysql兼容模式下返回空串。

62

last_day

入参增加timestamptz类型,mysql兼容模式下返回类型处理为date类型,ora/td模式返回timestamp。

63

next_day

入参增加timestamptz类型,mysql兼容模式下返回类型处理为date类型,ora/td模式返回timestamp。

64

add_months

入参增加timestamptz类型,mysql兼容模式下返回timestamptz类型,ora/td模式返回timestamp类型。

65

add_months

入参增加date类型,mysql兼容模式下返回date类型,ora/td模式返回timestamp类型。

66

pg_cbm_recycle_file

增加参数,支持备份和容灾并行特性对cbm的回收支持。

67

pgxc_query_audit

新增字段:begintime、operation_type、command_text、transaction_xid、query_id;修改原字段:将原time变更为endtime,将原type变更为audit_type。另将原detail_info下存放的操作命令移至command_text,而detail_info存放命令执行结果。

68

login_audit_messages

增强审计日志特性适配。

删除

69

add_policy/drop_policy/alter_policy/enable_policy/disable_policy

删除脱敏旧的接口。

系统视图

表6 系统视图

变更类型

序号

名称

变更描述

新增

1

GS_WLM_SQL_ALLOW

新增视图供用户查询当前已设置的白名单。

2

PG_TOTAL_SCHEMA_INFO

查询节点Schema空间信息。

3

PGXC_TOTAL_SCHEMA_INFO

查询集群Schema空间信息。

4

PGXC_TOTAL_SCHEMA_INFO_ANALYZE

分析集群Schema空间信息。

5

PGXC_LOCK_CONFLICTS

查询各节点上存在冲突的锁信息。

6

PGXC_DEADLOCK

返回处于分布式死锁中的锁等待信息(包括锁定对象、持锁对象和等锁对象的信息)。

7

PGXC_NODE_STAT_RESET_TIME

显示每个节点的重置时间。

8

GS_NODE_STAT_RESET_TIME

显示当前节点的重置时间。

9

GLOBAL_STAT_DATABASE

显示database全局统计信息。

10

GLOBAL_REL_IOSTAT

显示全局IO统计信息。

11

PGXC_REL_IOSTAT

显示各节点IO统计信息。

12

GS_REL_IOSTAT

显示当前节点IO统计信息。

13

GLOBAL_REDO_STAT

显示全局Redo统计信息。

14

PGXC_REDO_STAT

显示各节点Redo统计信息。

15

GLOBAL_WORKLOAD_TRANSACTION

显示全局workload事务统计信息。

16

PGXC_INSTANCE_TIME

显示各实例时间统计信息。

17

PGXC_SETTINGS

显示各节点GUC设置情况。

18

PGXC_REPLICATION_SLOTS

显示各节点复制slot统计信息。

19

PGXC_STAT_REPLICATION

显示各节点replication统计信息。

20

PGXC_STAT_BGWRITER

显示各节点bgwriter统计信息。

21

PGXC_WAIT_EVENTS

显示各节点等待事件统计信息。

22

GS_WAIT_EVENTS

显示当前节点等待事件统计信息。

23

PGXC_OS_RUN_INFO

显示各实例所在机器OS性能统计信息。

24

PG_LIFECYCLE_DATA_DISTRIBUTE

获取obs冷热表的数据分布情况统计。

25

PG_BULKLOAD_STATISTICS

对函数pg_stat_get_node_bulkload_statistics封装。

26

PGXC_BULKLOAD_STATISTICS

对函数pgxc_stat_get_node_bulkload_statistics封装。

27

PGXC_BULKLOAD_PROGRESS

基于视图pgxc_bulkload_statistics查询结果进行聚合,计算GDS业务进度百分比。

28

PG_QUERYBAND_ACTION

查询所有query_band负载行为。

29

GS_VIEW_DEPENDENCY_PATH

级联查询视图的依赖关系。

修改

30

REDACTION_COLUMNS

修改系统视图定义,新增一列function_infos。

31

PGXC_GET_TABLE_SKEWNESS

修复了视图PGXC_GET_TABLE_SKEWNESS不显示round-robin表的问题。

32

PGXC_STAT_DATABASE

显示各实例上的Database统计信息。

行为变更

表7 行为变更

变更类型

序号

名称

变更描述

修改

1

not-null/check约束冲突时不打印整行数据的detail

not-null/check约束冲突时不打印整行数据的detail。

2

兼容C80行为默认不匹配interval到text隐式类型转换

behavior_compat_options设置enable_interval_to_text后支持该隐式类型转换。

3

date类型

ora兼容模式下,date类型反解析为pg_catalog.date。

4

agg计划

agg生成stream计划时输出所需列。

5

median配套collate使用

禁用median/percentile_cont/percentile_disc中使用collate。

6

多列分区的修改

调整分区修改时的多列边界检查规则,当某一列的边界值为maxvalue则忽略后面其他列的边界值。

7

enable_nestloop为off时无关联条件时的计划生成

对于两个表无等值关联条件,但与其它表存在等值关联条件,且join的行数膨胀时,原来可以走nestloop,修复完走不了nestloop的计划;对于不支持hashjoin的等值join列,mergejoin也为off时,会导致nestloop代价变化,原来走nestloop+indexscan的会变成nestloop+materialize。

GUC参数

表8 GUC参数

变更类型

序号

名称

变更描述

新增

1

behavior_compat_options

  • 增加convert_empty_str_to_null_td选项,兼容TD模式下to_date, to_timestamp和to_number函数对空串处理返回NULL的行为。
  • 增加enable_interval_to_text选项,控制是否支持interval到text的隐式类型转换。

2

debug_group_dop

可以设定每个stream group的dop,用于在SMP自适应时进行语句级调优使用。默认为空。

3

enable_row_fast_numeric

行存表numeric落盘为bigint格式。

4

expand_hashtable_ratio

hash表动态扩展。

5

query_dop_ratio

新增逻辑dop依据系统资源和代价进行判断,当判断不准时增加参数进行逃生。默认为1。

6

show_unshippable_warning

新增参数,控制是否将不下推日志打印到客户端,默认关闭。

7

assign_abort_xid

新增session级别参数,当客户误删(delete)数据后,进行快速有损恢复。默认值为空字符串。此guc参数的意思是需回滚指定xid提交的事务。

8

bi_page_reuse_factor

批插页重用时空闲fsm因子(0表示回到旧逻辑)。

9

check_cu_size_threshold

userset级别,列存表插入时,如果一个CU里插入的数据量大于check_cu_size_threshold,启用行大小校验,避免产生大于1G的CU。

10

enable_light_colupdate

userset级别,表明是否使用轻量化update。

修改

11

cost_model_version

增加参数值2,默认值1不变。小于2时analyze固定值采样使用原始函数,大于2时固定值采样使用增强随机性的优化函数。

12

expected_computing_nodegroup

就地升级后设置expected_computing_nodegroup为bind。

13

query_dop

新安装集群默认值修改为1,升级集群维持原默认值不变。