9.1.0特性变更 |
易用-稳定性 |
基于queryId/PID动态切换SQL资源池 |
新增函数:gs_switch_respool(query_id int8, resource_pool_name name),作业切换资源池函数。 |
SQL语法参考>函数和操作符>系统管理函数>资源管理函数 |
高性能 |
jsonb_extract_path udf函数功能增强 |
新增函数: jsonb_extract((jsonb, VARIADIC text[]),输入任意的object-jsonb类型、array-jsonb类型,返回$2所指路径的值。 jsonb_extract_text((jsonb, VARIADIC text[]),输入任意的object-jsonb类型、array-jsonb类型,返回$2所指路径的值。 |
SQL语法参考>函数和操作符>JSON/JSONB函数 |
易用-生态兼容 |
CREATE SCHEMA IF NOT EXISTS |
修改内容: CREATE INDEX [IF NOT EXISTS] CREATE SCHEMA IF NOT EXISTS schema_name CREATE SEQUENCE [ IF NOT EXISTS ] name |
SQL语法参考>DDL>CREATE INDEX/CREATE SCHEMA/CREATE SEQUENCE |
内存 |
memory context内存统计 |
新增函数:查询指定共享内存下内存上下文申请的所有chunk信息。
- pg_shared_chunk_detail(contextname char(64))
- pv_session_chunk_detail(tid int, contextname char(64))
- pg_shared_chunk_dump(contextname char(64))
- pv_session_chunk_dump(tid int, contextname char(64))
|
SQL语法参考>函数和操作符>系统管理函数>内存管理函数 |
HA |
HA双通道优化 |
新增GUC参数enable_delayed_unlinks,设置是否开启检查点延迟删除特性。 |
开发指南>GUC参数>预写式日志>检查点 |
安全 |
数据脱敏增加安全管理员角色 |
预置角色新增gs_redaction_policy,具有创建、修改、删除脱敏策略的权限。 |
开发指南>管理数据库安全>管理用户及权限>权限管理 SQL语法参考>DDL语法>ALTER REDACTION POLICY/CREATE REDACTION POLICY/DROP REDACTION POLICY |
安全 |
审计日志记录级联删除对象 |
audit_object_name_format参数补充“当默认值设置为all时,显示多个对象名的场景:DROP USER ... CASCADE、DROP OWNED BY ... CASCADE、DROP SCHEMA ... CASSCADE、DROP TABLE ... CASCADE、DROP FOREIGN TABLE ... CASCADE、DROP VIEW ... CASCADE。” |
GUC参数>审计>审计开关 |
安全 |
函数支持ALTER/DROP权限 |
1. 对函数授权的子句。grant_on_functions_clause语法 修改为:GRANT { { EXECUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } 2. 回收函数的权限的子句。revoke_on_functions_clause修改为:REVOKE [ GRANT OPTION FOR ] { { EXECUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } 3. 将函数的访问权限赋予给指定的用户或角色。 GRANT { { EXECUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } 4. 撤销指定函数上权限。 REVOKE [ GRANT OPTION FOR ] { { EXECUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } |
SQL语法参考>DCL语法>ALTER DEFAULT PRIVILEGES /GRANT/REVOKE |
易用 |
序列支持查看及修改cache值 |
新增视图PG_SEQUENCES,显示当前用户有权限的序列属性信息。 |
开发指南>系统表和系统视图>系统视图 |
易用 |
相关stat函数支持列存表索引 |
GLOBAL_TABLE_STAT/GS_TABLE_STAT视图seq_scan/seq_tuple_read/index_scan/index_tuple_read字段删除“只统计行存表”的约束内容。 |
开发指南>系统表和系统视图>系统视图>GLOBAL_TABLE_STAT/GS_TABLE_STAT |
生态兼容 |
CREATE SCHEMA/ INDEX 支持 IF NOT EXISTS |
CREATE INDEX [IF NOT EXISTS] CREATE SCHEMA IF NOT EXISTS schema_name CREATE SEQUENCE [ IF NOT EXISTS ] name |
SQL语法参考>DDL>CREATE INDEX/CREATE SCHEMA/CREATE SEQUENCE |
性能 |
hint参数支持更多参数 |
修改内容:guc hint支持的配置参数新增以下参数:
- enable_array_optimization
- enable_csqual_pushdown
- enable_hashfilter
- enable_mergejoin
- enable_mixedagg
- enable_seqscan
- enable_sonic_hashagg
- enable_sonic_hashjoin
- enable_tidscan
- stream_ctescan_max_estimate_mem
- stream_ctescan_pred_threshold
- stream_ctescan_refcount_threshold
- windowagg_pushdown_enhancement
|
性能调优>SQL调优指南>使用Plan Hint进行调优>配置参数的hint |
生态兼容 |
修复pbe模式下,删除schema 重建表,执行查询缓存报表不存在问题 |
behavior_compat_options新增选项enable_change_search_path,控制在形成通用计划generic_plan后能否修改搜寻路径。 |
开发指南>GUC参数版本和平台兼容性>平台和客户端兼容性 |
性能 |
Topsql增加parse_time字段表示语句解析优化的总耗时 |
GS_WLM_SESSION_HISTORY/GS_WLM_SESSION_STATISTICS/PGXC_WLM_SESSION_INFO/PGXC_WLM_SESSION_STATISTICS视图新增字段parse_time,显示语句排队前的解析总时间。 |
开发指南>系统表和系统视图>系统视图>GS_WLM_SESSION_HISTORY GS_WLM_SESSION_STATISTICS/PGXC_WLM_SESSION_INFO/PGXC_WLM_SESSION_STATISTICS |
导入导出 |
GDS导出外表支持容错参数compatible_illegal_chars |
GDS导出外表支持容错参数compatible_illegal_chars。 |
SQL语法参考>DDL语法>CREATE FOREIGN TABLE (GDS导入导出) |
导入导出 |
支持GDS导出定长格式文件数据导出为一行;支持GDS导出数据文件对齐方式 |
导出FIXED格式时可指定eol参数为空串'',将FIXED格式数据导出为一行。 参数OPTIONS新增选项out_fix_num_alignment,控制字符型数据和数值型数据左右对齐方式。 |
SQL语法参考>DDL语法>CREATE FOREIGN TABLE (GDS导入导出) |
高性能 |
子查询条件上移传递 |
rewrite_rule取值新增subquery_qual_pull_up,表示对于无法提升的子查询,若子查询与其它表进行关联的关联列在子查询内部有过滤条件,支持从子查询中提取过滤条件并传递到关联条件另一侧。 |
开发指南>开发人员选项>rewrite_rule |
高性能 |
inlist执行器计算hash化支持 |
- 新增GUC参数enable_inlist_hashing,控制是否使用inlist哈希优化。
- 修改参数qrw_inlist2join_optmode默认值为disable。
|
开发指南>GUC参数>查询规划>优化器方法配置 |
易用性 |
调度器的功能增强(hudi) |
新增查询历史同步信息、查询同步任务状态、复位连续失败任务。 |
开发指南>SQL on Hudi>Hudi任务同步 |
易用性 |
设定默认的临时表类型(volatile) |
- 新增GUC参数default_temptable_type,用于控制CREATE TABLE创建临时表时在TEMP或TEMPORARY前未指定表类型所创建临时表的类型。
- CREATE TABLE补充说明:当default_temptable_type=local时,不指定关键字创建的临时表为local类型临时表,当default_temptable_type=volatile时,不指定关键字创建的临时表为volatile类型临时表。
|
- 开发指南>GUC参数>其他选项
- SQL语法参考>DDL语法>CREATE TABLE
|
兼容性 |
支持指定分区的MERGE操作 |
新增partition_clause子句,partition_clause参数描述及相关约束。 |
SQL语法参考>DML语法>MERGE INTO |
兼容性 |
TD兼容模式下支持比较字符串忽略尾部空格 |
CREATE DATABASE语法新增参数[DBCOMPATIBILITY_BEHAVIOR [=] opt_compat_behavior] |
SQL语法参考>DDL语法>CREATE DATABASE |
兼容性 |
支持通过GUC参数配置控制varchar(n)的n为字符个数限制 |
GUC参数behavior_compat_options新增选项enable_varchar_to_nvarchar2,控制通过DDL语句创建、更新的varchar字段是否自动切换为nvarchar2字段。 |
开发指南>GUC参数>版本和平台兼容性>平台和客户端兼容性 |
高性能 |
ANALYZE优化 |
新增EXPLAIN PERFORMANCE语法格式及示例。 |
SQL语法参考>DML语法>EXPLAIN |
扩缩容 |
缩容需适配指定表跳过重分布的方案 |
in_redistribution字段新增选项s,表示NodeGroup不需要重分布,重分布过程将跳过此节点组。 |
开发指南>系统表和系统视图>系统表>PGXC_GROUP |
高性能 |
支持使用analysis_options中KEEP_SAMPLE_DATA选项 |
analysis_options新增选项KEEP_SAMPLE_DATA,表示以临时表的形式保留每次analyze操作中使用的采样数据。 |
开发指南>GUC参数>开发人员选项 |
实时数仓 |
列存hstore表异步排序 |
新增函数gs_hstore_asyncsort和gs_get_sorted_cu_info,用来获取目标表的排序。 新增GUC参数autovacuum_asyncsort_rows_limit和autovacuum_asyncsort_time_limit,查看自动异步排序的行数和时间。 |
- 开发指南>实时数仓>实时数仓函数
- 开发指南>实时数仓>实时数仓GUC参数
|
湖仓一体 |
支持Hive Metastore对接 |
新增METAADDRESS和CONFIGURATION参数,提供hivemetastore的通讯接口和配置文件存放路径。 新增跨集群访问HiveMetaStore,通过建立EXTERNAL SCHEMA实现远端访问MRS的Hive数据源。 |
- SQL语法>DDL语法>ALTER EXTERNAL SCHEMA
- SQL语法>DDL语法>CREATE EXTERNAL SCHEMA
- 开发指南>数据迁移>导入数据
|
湖仓一体 |
支持parquet写 |
数据导出支持parquet文件格式。 |
SQL语法>DDL语法> CREATE FOREIGN TABLE (SQL on OBS or Hadoop) |
高性能 |
冷热表增强 |
新增函数reload_cold_partition,支持冷热数据互相转换,新增示例支持将冷分区数据转换成热分区。 |
- SQL语法>函数和操作符>数据库对象函数>冷热表用户函数
- 开发指南>冷热数据管理
|
高性能 |
缓存双写 |
新增GUC参数和视图,对于列存表和hstore opt表,在异步写数据到obs后,同时也支持将数据写到本地磁盘上。 |
开发指南>GUC参数>资源消耗>异步IO 开发指南>系统表和系统视图>系统视图 |
高性能 |
异步写业务逻辑适配 |
新增GUC参数和视图:obs_worker_pool_size用于设置IO调度器资源池的最大值。enable_aio_scheduler,控制是否开启异步IO调度。 PGXC_OBS_IO_SCHEDULER_STATS,用于查询OBS IO Scheduler读/写请求相关的实时统计信息。 |
开发指南>GUC参数>异步IO 开发指南>系统表和系统视图>系统视图 |
9.1.0.100特性变更 |
日志归档 |
审计日志转储一期 |
新增GUC参数:
- obs_audit_enabled,控制审计转储功能的开启和关闭。
- obs_audit_space_limit,设置转储的审计文件占用的OBS空间总量。
- obs_audit_file_remain_time,设置OBS上需记录转储的审计日志的最短时间要求。
|
开发指南>GUC参数>审计>审计开关 |
升级 |
json函数性能优化 |
新增函数:
- json_to_record_array(anyelement, array-json [, bool])
- jsonb_to_record_array(anyelement, array-json [, bool])
|
SQL语法参考>函数和操作符>JSON/JSONB函数和操作符>JSON/JSONB函数 |
SQL |
Plan Management |
新增函数pgxc_reset_planmgmt_hashtable(),释放所有CN上plan management用于缓存outline所占用的内存。 |
SQL语法参考>函数和操作符>系统管理函数>plan management管理函数 |
实时 |
runtime filter 1期 |
新增GUC参数:
- runtime_filter_type,标识使用的runtime filter类型。
- runtime_filter_ratio,控制runtime filter在join场景中是否使用bloom filter进行细粒度行级过滤的阈值。
|
开发指南>GUC参数>查询规划>其他优化器选项 |
实时 |
turbo引擎性能优化 |
- turbo_engine_version参数新增取值3,取值为3时,对于大多常用算子可使用turbo执行引擎加速,不支持算子如merge join,sort agg等算子。
- 新增GUC参数spill_compression,控制执行器算子运行数据由于内存不足下盘时的压缩算法。
|
开发指南>GUC 参数>查询规划>优化器方法配置 |
IO |
资源管理IO监控能力增强 |
- 新增GS_QUERY_RESOURCE_INFO视图,显示当前DN节点所有正在运行作业的资源信息。
- 新增函数pgxc_query_resource_info(query_id bigint),显示指定query_id对应的语句在所有DN上的资源监控信息。
|
- 开发指南>系统表和视图>系统视图>GS_QUERY_RESOURCE_INFO
- SQL语法参考>函数和操作符>系统管理函数>资源管理函数
|
连接数 |
空闲连接治理 |
新增GUC参数syscache_clean_policy,设置DN空闲连接内存及数量清理策略。 |
开发指南>GUC参数>连接池参数 |
异常规则 |
查询过滤器熔断规则增强 |
- PG_BLOCKLISTS系统表记录了查询过滤规则。
- DDL语法新增CREATE BLOCK RULE/ ALTER BLOCK RULE /DROP BLOCK RULE。
|
- 开发指南>系统表和视图>系统表>PG_BLOCKLISTS
- SQL语法参考>DDL语法
|
性能 |
NUMA绑核性能提升 |
新增GUC参数:
- enable_numa_bind,设置是否开启NUMA绑定功能。默认开启。
- numa_bind_node,设置在开启NUMA绑定后进程绑定在哪个NUMA节点运行。
|
开发指南>GUC参数>资源消耗> 内核资源使用 |
磁盘类 |
pgstat持久化,最后一次访问时间 |
- 新增函数: pgxc_stat_get_last_data_access_timestamp(),返回指定表在所有节点中最近一次的访问时间。 pgxc_stat_flush_object_data(),手动执行持久化。
- DBMS_JOBDBMS_JOB.ISUBMIT接口补充说明:在使用dbms_job.isubmit接口时需注意,不能和已经存在的pgstats持久化任务的id重复,否则会导致任务注册失败。
|
- SQL语法参考>函数和操作符>统计信息函数
- 开发指南>存储过程>高级包
|
GIS |
PostGIS 3.2.2函数接口对齐 |
PostGIS依赖库安装,补充protobuf-c编译内容。 |
开发指南>PostGIS Extension>PostGIS概述/PostGIS-3.2.2安装 |
智能运维 |
ANALYZE性能增强 |
- 新增GUC参数:enable_expr_skew_optimization,控制是否在倾斜优化策略中使用表达式统计信息。
analyze_predicate_column_threshold,控制是否开启谓词列analyze及限定支持的最小列数。 enable_runtime_analyze_concurrent, 控制是否支持对一个表进行并发runtime analyze。 analyze_max_columns_count,控制analyze能支持最大的列数。
- CREATE TABLE语法新增参数incremental_analyze, 控制分区表是否启用增量analyze模式。
- ANALYZE | ANALYSE语法补充说明“开启分区统计信息参数enable_analyze_partition,对分区表设置表级incremental_analyze参数,会先对无统计信息或有数据变化的分区执行ANALYZE,然后通过合并分区统计信息方式生成分区主表的统计信息。
- ANALYZE | ANALYSE语法补充新关键predicate,使用后会进行谓词列analyze。
|
- 开发指南>GUC参数>查询规划>优化器方法配置
- SQL语法参考>DDL 语法>CREATE TABLE
- SQL语法参考>DCL语法>ANALYZE | ANALYSE
|
湖仓一体 |
外表read、write合一 |
补充READ WRITE语法,支持读写外表。 |
SQL语法>DDL语法>CREATE FOREIGN TABLE (SQL on OBS or Hadoop) |
实时 |
bitmap索引增强 |
新增实时数参数enable_hstoreopt_auto_bitmap,用于控制是否默认在建表时给HStore Opt表自动设置bitmap columns列。 |
开发指南>实时数仓>实时数仓GUC参数 |
实时 |
实时数仓定位增强 |
新增函数pgxc_get_cstore_dirty_ratio,用于获取各个DN上目标表的cu、delta以及cudesc的脏页率,仅支持HStore_opt表。 |
开发指南>实时数仓>实时数仓函数 |
存算分离 |
cudesc streaming写 |
逻辑集群访问默认选择cudesc streaming路径,即GUC参数enable_cudesc_streaming默认值由off改为on。 |
开发指南 > GUC参数 > 开发人员选项 |
存算分离 |
V3表冷读性能优化 |
优化列存3.0表的读取性能,使得列存V3表的冷读性能相较于全缓存劣化小于30%,提高性能竞争力。
- 新增pgxc_clear_aio_resource_pool(force_cleanup bool)函数,用于清理异步资源池中的资源。
- 新增PGXC_AIO_RESOURCE_POOL_STATS视图,用于查询集群所有节点的异步IO资源池使用的状态。
- 新增GUC参数cu_preload_max_distance,用于控制预读CU Group个数的上限。新增GUC参数async_io_acc_max_memory,用于控制单个任务线程中异步读/写加速特性可使用的最大内存。
- 增加了explain performance中的磁盘缓存信息。
|
- SQL语法参考 > 函数和操作符 > 系统管理函数 > 其他函数
- 开发指南 > GUC参数 > 资源消耗 > 异步IO
- 开发指南 > GUC参数 > 资源消耗 > 内存
- 开发指南 > 系统表和视图 > 系统视图 > PGXC_DISK_CACHE_ALL_STATS
- 性能调优 > SQL执行计划
|