云服务器内容精选

  • GUC参数 表8 GUC参数 变更类型 序号 名称 变更描述 新增 1 space_readjust_schedule 用户、schema空间是否自动校准的参数,默认值:auto,支持范围:off/auto/auto(xxxK/M/G)。 2 space_once_adjust_num 空间管控和空间统计功能中,控制慢速构建与细粒度校准操作中每次处理的文件个数阈值,默认值:300。 3 tag_cache_max_number 该参数用于设置全局哈希表tag cache缓存item的最大阈值,默认值10000000。 4 enable_tagbucket_auto_adapt 该参数用于设置是否开启tagbucket自适应调整,默认值on。 5 cache_tag_value_num 该参数用于在tag列lateread场景时,设置缓存的tag元组数量,默认值60000。 6 buffer_ring_ratio 用于控制行存Ringbuffer的阈值和开关,默认值250,即1/4(250/1000),与以前逻辑一致。 7 enable_stream_ctescan 新增参数,升级默认关闭,新装默认打开。控制stream计划是否开启share scan功能。 8 behavior_compat_options 新增disable_including_all_mysql选项用于控制MySQL兼容模式下create table like语法是否为including all模式,默认不设置,create table like语法为including_all模式。 9 profile_logging_module 增加GUC参数profile_logging_module配置记录性能日志的类型,升级和新装均默认打开OBS,HADOOP,REMOTE_DATANODE,关闭MD。该参数方法与日志模块开关logging_module相同。 10 object_mtime_record_mode 控制pg_object记录修改时间的行为,默认保持老版本行为,新增选项可控制不记录分区/truncate/grant/revoke。 11 skew_option 控制是否使用优化策略。 12 ddl_lock_timeout 配置ddl锁超时的时间。 修改 13 rewrite_rule 新增选项orconversion,默认打开。 使用等值关联的OR条件优化规则。变更点:计划从nestloop转到hashjoin。 新增选项projection_pushdown,默认打开。 变更点:子查询/CTE/视图中未使用的列被优化删除。 14 default_orientation 新增userset guc参数default_orientation,用于控制用户默认建表(不设置orientation)的类型,参数有三种类型可以设置: 行存表(row),列存表(column),开启delta表的列存表(column enabledelta)。 15 max_process_memory 初始化安装时OM设置max_process_memory公式为:可用内存*0.7/(1+DN数),其中系数0.7改为0.8。老集群升级、扩容等场景不变。 16 enable_bloom_filter 复用原参数,现用于控制列存BloomFilter,默认值不变(打开)。 17 retry_ecode_list 默认值新增45003,主要是处理list分区表查询和add分区并发场景下,查询分区可能错位的问题。 18 auth_iteration_count 将默认值从50000减少到10000,新装、升级均会修改。参数表示客户端和服务端密码哈希迭代次数。
  • 系统视图 表6 系统视图 变更类型 序号 名称 变更描述 新增 1 pgxc_session_wlmstat 新增视图。 2 pg_comm_query_speed 新增视图,根据query_id查询发送信息。 3 pgxc_respool_resource_info pgxc_respool_runtime_info pgxc_respool_resource_history gs_respool_resource_info gs_respool_runtime_info 资源监控新增相关视图。 4 pgxc_wait_detail pgxc_lockwait_detail 新增pg_locks增强视图。 修改 5 DBA_PART_INDEXES DBA_PART_TABLES DBA_TAB_PARTITIONS USER_IND_PARTITIONS USER_PART_INDEXES USER_TAB_PARTITIONS 增加相关list分区描述。 6 pgxc_wlm_session_statistics 视图从所有CN查询TopSQL实时信息的逻辑由串行修改为并行,提升性能,功能不变。 7 all_indexes sys和pg_catalog下面的视图all_indexes定义存在问题,不同scheam下存在同名对象的场景下会导致结果集膨胀。
  • 行为变更 表7 行为变更 变更类型 序号 名称 变更描述 修改 1 create index目标表为时序表时 时序表创建的任何索引都会转换为tag表上的双索引,该双索引的索引列为指定的建索引的列。 2 负载管理新增二次管控 负载管理引入二次管控,提供更精细化的管控,FUNCTION、函数和多语句中包含复杂查询的可能触发多次管控,设置enable_transaction_parctl=off可以关闭二次管控,但同时会关闭事务块语句和多语句管控。 3 负载管理autoanalyze纳管 查询触发autoanalyze管控逻辑由不管控修改为管控,设置enable_transaction_parctl=off可以关闭autoanalyze管控。 4 用户监控视图pg_total_user_resource_info CPU/内存资源使用和限制全部修改为用户在集群内的资源使用和资源限制。 CPU、IO、内存监控规格变更:由只监控复杂作业修改为监控所有作业。 CPU监控逻辑变更:由cgroup监控修改为作业CPU监控汇总。 5 审计日志 1.事务内语句在未设置审计事务但设置审计对应语句类型时,仍进行审计。 2.DECLARE CURSOR语句在guc参数audit_operation_exec设置select时也进行审计。
  • 关键字 表3 关键字 变更类型 序号 名称 变更描述 新增 1 MATERIALIZED with cte as后新增[NOT] MATERIALIZED语法。作为非保留关键字,不影响其作为其他对象名,作为列别名时需要加AS。 2 time_fill 用于时间填充表达式输出time_fill列,作为关键字,不能用作函数名和自定义数据类型名。 3 fill_first/fill_last/fill_avg 用于时间填充表达式,输出填充列,作为关键字,不能用作函数名和自定义数据类型名。 4 list 用于指定分区表类型,作为非保留关键字,不影响其作为其他对象名,作为列别名时需要加AS。 5 tsfield/tstag/tstime 用于指定时序表kvtype类型,作为非保留关键字,不影响其作为其他对象名,作为列别名时需要加AS。
  • 系统函数 表5 系统函数 变更类型 序号 名称 变更描述 新增 1 rb_build 将int数组转成一个bitmap类型。 2 rb_to_array rb_build的逆向操作,把RoaringBitmap转成int数组。 3 rb_and 两个RoaringBitmap做交集操作。 4 rb_or 两个RoaringBitmap做并集操作。 5 rb_xor 两个RoaringBitmap做异或操作。 6 rb_andnot 两个RoaringBitmap做and后取反。 7 rb_cardinality 计算一个RoaringBitmap的基数。 8 rb_and_cardinality 计算两个RoaringBitmap求and以后的基数。 9 rb_or_cardinality 计算两个RoaringBitmap求or以后的基数。 10 rb_xor_cardinality 计算两个RoaringBitmap求xor以后的基数。 11 rb_andnot_cardinality 计算两个RoaringBitmap求andnot以后的基数。 12 rb_is_empty 判断一个RoaringBitmap是否为空。 13 rb_equals 判断两个RoaringBitmap是否相等。 14 rb_intersect 判断两个RoaringBitmap是否相交。 15 rb_contain 判断第一个RoaringBitmap是否包含指定的值。 16 rb_add RoaringBitmap中增加一个值。 17 rb_remove RoaringBitmap中删除一个值。 18 rb_flip 翻转指定范围的RoaringBitmap。 19 rb_min 求一个RoaringBitmap的最小值。 20 rb_max 求一个RoaringBitmap的最大值. 21 rb_rank 返回Bitmap中小于等于指定Offset的基数。 22 rb_contain_rb 判断第一个RoaringBitmap是否包含第二个roaringbitmap。 23 rb_containedby_rb 判断第二个RoaringBitmap是否包含第一个roaringbitmap。 24 rb_containedby 判断指定的值是否被指定的roaringbitmap包含。 25 rb_iterate 返回RoaringBitmap对应的int 。 26 rb_and_agg 将RoaringBitmap列按照and逻辑做聚合。 27 rb_or_agg 将RoaringBitmap列按照or逻辑做聚合。 28 rb_xor_agg 将RoaringBitmap列按照xor逻辑做聚合。 29 rb_and_cardinality_agg 将RoaringBitmap列按照and逻辑做聚合后的基数。 30 rb_or_cardinality_agg 将RoaringBitmap列按照or逻辑做聚合后的基数。 31 rb_xor_cardinality_agg 将RoaringBitmap列按照xor逻辑做聚合后的基数。 32 rb_build_agg 将int列聚合成RoaringBitmap类型数据。 33 pgxc_wlm_readjust_relfilenode_size_table() 空间统计校准函数,不重建PG_RELFILENODE_SIZE系统表,重新校准用户和schema空间。 34 gs_table_distribution() 快速查询系统中表大小的函数。 35 pg_obs_cold_refresh_time 修改obs多温表自动切换任务时间。 36 gs_clean_tag_relation 清理tag表中无用的tagid行数据。该函数入参为时序表OID,每个分区遍历cudesc表tagid列的最小值,从而得到整个时序表tagid的最小值。 37 proc_drop_partition 用于将分区boundary时间超过TTL的分区进行drop。 38 proc_add_partition 用于为分区表创建分区。 39 pg_collation_actual_version 返回ICU排序规则的实际版本号。 40 first 分组内第一个元素。 41 last 分组内最后一个元素。 42 mode 分组内出现频率最高的值。 43 delta 相邻两行的差值。 44 percentile_of_value 近似百分位的值。 45 value_of_percentile 近似百分位。 46 spread 分组内最大值和最小值的差值。 47 pg_flush_buffers 刷出所有行存脏页。 修改 48 pg_stat_activity系列视图 pg_stat_get_activity_with_conninfo、pg_stat_activity、pgxc_stat_activity、pg_stat_get_activity视图新增stmt_type和lwtid列。 49 pg_authid系统表新增两行 新增pg_role_signal_backend,pg_role_read_all_stats预置角色。 50 vac_fileclear_relation 可以返回指定表真实清理文件的数量,不清理返回0。 51 vac_fileclear_all_relation 可以返回所有列存表真实清理文件的数量,不清理则返回0。
  • 系统表 表4 系统表 变更类型 序号 名称 变更描述 新增 1 rb_added RoaringBitmap中增加一个值。 2 pg_partition pg_partition新增字段boundexprs。 3 pg_relfilenode_size 新增系统表。 4 pg_attribute pg_attribute新增attkvtype列,记录列的kvtype类型。 5 pg_collation 新增一条记录case_insensitive,用于支持大小写不敏感行为。
  • 新增功能 表1 8.1.3新增功能 特性 描述 参考文档 支持自增分区和分区表管理功能 分区管理新增PERIOD(interval类型)和TTL(interval类型) CREATE TABLE ALTER TABLE CREATE TABLE PARTITION 外表支持json格式 HDFS外表READ ONLY外表支持JSON文件格式。 OBS外表READ ONLY外表支持JSON文件格式。 CREATE FOREIGN TABLE (SQL on Hadoop or OBS) 跨集群互联互通特性 解除约束: 解除GDS的hang约束; 解除常用聚合函数约束:sum/count/min/max/avg等; 解除标量函数、分析函数约束; 增加互联互通外表与源表的列名、列类型强校验; 解除列名不可包含" WHERE "约束; 解除limit约束; 完善临时GDS外表策略; 本地集群是目标集群时,发起数据同步业务。 基于GDS的跨集群互联互通 冷热表功能增强 冷热自动搬迁。 CREATE TABLE IoT数仓功能增强 时序数据库满足IoT数据实时存储。 IoT场景下GUC参数 CREATE INDEX 函数和表达式 行存ring buffer可通过开关控制 ring buffer提供开关控制和阈值调整,大表批量更新不使用ring buffer buffer_ring_ratio 创建表时默认存储方式 通过default_orientation参数控制,创建表时,当不指定存储方式时,根据该GUC参数的值创建对应类型的表。 default_orientation GDS支持欧元符 GBK字符集支持欧元符。 CREATE DATABASE OBS外表支持XSKY S3 OBS外表适配XSKY,新增eol参数。 CREATE FOREIGN TABLE (SQL on Hadoop or OBS) SQL支持了位图功能(RoaringBitmap) 互联网、新零售、教育、游戏等行业,根据目标群体的特征, 快速提取目标群体,生成客户画像,当前的功能不能完全满足需求,需要SQL支持了位图功能(RoaringBitmap),更好支撑互联网业务常见的客户画像业务。 位图函数和操作符 RoaringBitmap类型 TD兼容支持不区分大小写 TD数据源迁移至DWS的大量存储过程涉及到去重操作,源数据中存在大量内容相同但是大小写不同的数据,DWS中使用distinct去重后会有大量重复数据,使用upper函数会改变源数据,存储过程数量多,逻辑复杂,手动修改难度大,需要增加DWS不区分大小写的特性。 排序规则支持 排序规则版本函数 List分区 分区表支持List分区。 相关语法: CREATE TABLE PARTITION ALTER TABLE PARTITION 系统表:PG_PARTITION 相关视图: DBA_PART_INDEXES DBA_PART_TABLES DBA_TAB_PARTITIONS USER_IND_PARTITIONS USER_PART_INDEXES USER_TAB_PARTITIONS MySQL兼容性增强 ALTER TABLE支持同时修改多个列。 ALTER TABLE支持COMMENT。 ALTER TABLE支持CHANGE、DROP KEY、DROP PARTITION和FIRST/AFTER。 ALTER INDEX、CREATE INDEX ALTER TABLE、CREATE TABLE ALTER TABLE PARTITION projection pushdown 对于多列视图场景,引用时自动去除无用的列,避免多余计算。 rewrite_rule新增projection pushdown描述。 share scan share scan stream计划CTE支持share scan: 新增enable_stream_ctescan logging_module增加取值STREAM_CTESCAN SELECT语法的WITH子句中增加可选的[[NOT] MATERIALIZED]支持是否物化语法。 列存Bloom Filter 外表侧同线程包含有HDFS内外表或列存表的HASH JOIN会触发Bloom Filter。 enable_bloom_filter 列存复制表支持UPDATE 客户有大量复制表的MERGE INTO操作,复制表支持UPDATE、DELETE和MERGE INTO等操作,跟行存表的功能对齐。 MERGE INTO UPDATE UPSERT 细粒度权限管理 新增表级权限Alter/Drop/Vacuum。 新增Schema级权限Alter/Drop。 新增预置角色role_signal_backend、role_read_all_stats。 预置角色 新增表级权限: VACUUM ALTER TABLE DROP TABLE 新增Schema级权限: ALTER SCHEMA DROP SCHEMA ALTER DEFAULT PRIVILEGES GRANT REVOKE 解决INSERT OVERWRITE多CN死锁问题 多CN同时出发INSERT OVERWRITE不会造成死锁。 - 执行计划优化 SQL关联条件含or,执行计划走nestloop导致性能差,改写为union all优化。 SQL存在关联,过滤条件中含or条件,列存表的关联前对or的条件剪枝。 集群DN数量较多时,大表与小表关联时,小表不走重分布操作而是走广播操作。 SQL调优关键参数调整 rewrite_rule新增projection_pushdown和or_conversion。 基于Relfile的空间统计与空间管控 pg_table_size、pg_relation_size、table_skewness等系列视图的查询能够秒级返回结果。 schema空间管控能够统计全量空间,解除当前约束。 user/schema空间管控校准函数能够快速执行,schema空间校准函数自动执行。 schema空间配额的SQL接口能够按照schema总空间分配而非DN级别。 空间管理 新增负载管理GUC参数: space_once_adjust_num space_readjust_schedule 新增系统表: PG_RELFILENODE_SIZE 新增函数: gs_table_distribution(schemaname text, tablename text) gs_table_distribution() pgxc_wlm_readjust_relfilenode_size_table() pgxc_wlm_readjust_relfilenode_size_table(integer) 性能定位定界增强专项 通信异常监测日志增强。 pgxc_stat_activity视图增强。 支持Top SQL与Unique SQL关联。 新增pg_session_wlmstat分布式视图 新增系统视图:PG_COMM_QUERY_SPEED PG_STAT_ACTIVITY补充“lwtid”和“stmt_type”字段描述。 GS_WLM_SESSION_HISTORY补充unique_sql_id字段信息。 新增系统视图:PGXC_SESSION_WLMSTAT。 资源负载管理优化重构 用户资源监控增强:用户资源监控逻辑整改。 资源监控增强:优化作业、用户资源监控,并增加队列级别资源监控。 用户资源监控 资源监控增强: 新增:资源池资源监控 新增系统视图: PGXC_RESPOOL_RESOURCE_INFO PGXC_RESPOOL_RUNTIME_INFO PGXC_RESPOOL_RESOURCE_HISTORY GS_RESPOOL_RESOURCE_INFO GS_RESPOOL_RUNTIME_INFO 新增系统表: GS_RESPOOL_RESOURCE_HISTORY 分区表特性修改 边界值个数约束修改:分区表的所有分区数不超过32767个,所有分区的边界值个数不大于32767个。 修改创建默认分区策略:建分区表时,将创建两个默认分区,这两个默认分区的分区时间范围均为PERIOD。 CREATE TABLE PARTITION Agg 重分布列Hint Oracle数仓迁移过程中,通过增强Hint特性手动指定分布列。 Plan Hint调优概述 Stream方式的Hint 新增除零返回NULL(8.1.3.110新增) MySQL兼容模式下,除数为0时,控制除法取余操作是否报错。参数behavior_compat_options新增兼容配置项enable_division_by_zero_mysql。 behavior_compat_options DDL锁超时配置(8.1.3.200新增) 新增GUC参数ddl_lock_timeout,可对DDL锁超时时间进行配置。 ddl_lock_timeout PG_LOCKS视图增强(8.1.3.200新增) 新增视图PGXC_WAIT_DETAIL和PGXC_LOCKWAIT_DETAIL 增加wait_on_pid、query_id等字段。 PGXC_WAIT_DETAIL PGXC_LOCKWAIT_DETAIL 数据脱敏可算不可见兼容配置(8.1.3.310新增) 新增GUC参数redact_compat_options,用于设置数据脱敏可算不可见兼容性行为配置项。 redact_compat_options truncate、exchange与select并发(8.1.3.320新增) 新增GUC参数ddl_select_concurrent_mode,该特性主要解决数据量较大或复杂查询的场景中,查询语句持续时间过长,阻塞DDL的场景,与Oracle效果一致。 支持场景: 支持truncate和select并发; 支持exchange和select并发。 场景约束: 与高级别的锁冲突(大于1级),不支持并发(比如autoanalyze_mode=normal时,同时select触发了autoanalyze); 与事务块中的锁冲突,不支持并发。 DWS常用连接方式约束: jdbc、odbc、python驱动时,如果程序设置了autocommit = false,不支持该特性; Data Studio下发的所有查询语句,自动起事务,不支持该特性。 ddl_select_concurrent_mode 支持控制LIMIT语句是否启用early stop优化(8.1.3.320新增) 新增GUC参数enable_limit_stop,控制LIMIT语句是否启用early stop优化。 enable_limit_stop early stop功能行为变更(8.1.3.322新增) GUC参数enable_limit_stop默认值改为on。 enable_limit_stop