华为云用户手册

  • 应用场景2:安全合规 大型企业的每个业务部门都有独立的云账户实现资源隔离,每个业务部门的运维人员需要依赖日志监控告警实现故障定位分析,同时集团安全部门需要统一监控日志,因此多账号的统一日志管理成为企业痛点: 分业务独立运维:客户每个业务模块都有一个独立的账号做资源隔离,依赖日志服务配置监控告警,快速分析发现故障并定位根因。 安全部门统一监控日志:客户使用多账号管理体系,每个业务部门有一个独立的账号,安全部门需要汇聚所有日志到一个账号,并存储180天以上来满足法规要求。 基于云日志服务LTS可以实现: 多账号独立管理:每个账号独立采集各自业务的应用日志、云服务日志,资源互相隔离、权限划分清晰;借助日志告警配置,90%问题定位控制在10分钟。 日志数据跨账号集中汇聚:使用LTS的多账号日志汇聚功能,将各个子账号的日志复制一份到统一监控账号,长期存储180天,便于安全部门集中审计,满足网络安全法规要求。 LTS提供解决方案参考如下图2,可以实现统一收集云服务、应用程序日志,支持保存180天以上,满足《网络安全法》、《GDPR》等法律法规要求。 图2 安全合规解决方案
  • 应用场景1:应用运维 企业在日常业务运维、审计或等保时,需要收集各种类型的日志,常遇到如下痛点: 企业部门多且日志繁杂,日志量大。 云服务资源种类数量多,不熟悉监控指标和运维日志,运维难度大。 安全合规要求高,等保合规要求日志长期存储,人力不足,维护成本高。 基于云日志服务LTS可以实现: 提供全场景日志接入,全面覆盖业务、应用、中间件和基础设施,实现快速收集日志。 支持秒级日志查询和分钟级日志监控,通过配置告警规则和告警通知,实现分钟级问题定位和分析。 支持将日志转储至OBS实现长期保存,满足网络安全要求。 LTS提供解决方案参考如下图1,可以实现统一收集生产环境应用日志,开发人员检索分析日志,运维人员基于日志配置告警,实时感知现网业务,及时发现并解决故障问题。 图1 应用运维解决方案
  • 订阅 选择对应设置的发布,单击右键选择“新建订阅”。 图17 新建订阅 创建订阅的发布,单击“下一步”。 图18 创建发布 选择推送订阅,单击“下一步”。 图19 分发代理位置 选择“添加订阅服务器”,支持SQL Server引擎和非SQL Server作为订阅服务器,将创建并根据上述步骤配置的华为云实例作为一个订阅服务器。 图20 添加订阅服务器 选择一个数据库作为订阅对象。 图21 选择订阅数据库 配置与订阅服务器的连接。 图22 配置连接 使用一个长期有效的数据库帐号,保障订阅长期有效,这里的帐号设置可以为登录华为云实例的数据库帐号,单击“确定”。 图23 连接分发服务器 创建订阅成功。 图24 创建订阅 将鼠标移动到发布配置上可以看到对应的订阅信息。 图25 查看订阅
  • 发布 创建发布。 展开服务器下的“复制”节点,右键单击“本地发布”,选择“新建发布”。 图10 新建发布数据库 选择事务发布。 选择以表作为发布对象。 图11 发布表 添加筛选对象,进行个性化的发布。 图12 添加筛选对象 事务发布会先创建一个快照以复制表当前的状态。也可以设置快照代理用以执行计划。 图13 快照代理 设置代理安全性,这里需要设置登录帐号为本地sa帐号。 图14 设置代理安全性 设置发布名称,单击“完成”。 图15 完成 创建完成后可以通过复制监视器来查看是否创建发布成功。 图16 启动复制监视器
  • 背景 通常情况下大表的DDL操作都会对业务产生很大的影响,需要在业务低峰期做。MySQL 5.7支持原生DDL工具Copy和Inplace算法、以及开源DDL工具gh-ost,减少了DDL期间DML操作被阻塞的情况。但是大表DDL仍然需要花费很长时间。 instant秒级加列算法,让添加列的时候不在需要rebuild整个表,只需要在表的metadata中记录新增列的基本信息即可,可以很快执行完成。但是目前支持的DDL操作有限。
  • 使用限制 使用场景的限制: 部分场景下增加、删除、重命名(MySQL 8.0.28之后)列。 设置或删除列的默认值。 修改ENUM或SET列的定义。 更改索引的类型(BTREE | HASH)。 增加或删除虚拟列。 表名重命名。 添加或删除列的限制: 不支持有其他INSTANT语句在同一行的操作在同一条语句的情况。 新增列将会放到最后,不支持改变列的顺序(MySQL 8.0.29后支持任意位置加列)。 不支持在行格式为COMPRESSED的表上快速加列或删除。 不支持在已经有全文索引的表上快速加列或删除。 不支持在临时表上快速加列或删除。 重命名列的限制: 不支持重命名被其他表引用的列。 不支持重命名列的操作与生成或者删除虚拟列在同一个语句中。 修改ENUM或SET列的限制: 不支持ENUM或者SET列数据类型占用的存储空间发生变化。 增加或删除虚拟列的限制: 不支持对分区表的增加或删除操作。
  • 载入数据字典 MySQL从系统表读取表定义时,会将instant column相关的信息载入到InnoDB的表对象“dict_table_t”和索引对象“dict_index_t”中。 dict_table_t::n_instant_cols:第一次instant add column之前的非虚拟字段个数(包含系统列)。 dict_index_t::instant_cols:用于标示是否存在Instant column。 dict_index_t::n_instant_nullable:第一次instant add column之前的可为NULL的字段个数。 dict_col_t::instant_default:存储instant列默认值及其长度。
  • 记录格式 为了支持instant add column,针对COMPACT和DYNAMIC类型引入了新的记录格式,主要为了记录字段的个数信息。 如果没有执行过instant add column操作,则表的行记录格式保持不变。 如果执行过instant add column操作,则所有新的记录都会设置一个特殊的标记,同时在记录内存储字段的个数。 INSTANT_FLAG使用了info bits中的一个bit位,如果记录是第一次instant add column之后插入的,该flag被设置为1。 图1 记录格式
  • 新的数据字典信息 在执行instant add column的过程中,MySQL会将第一次intant add column之前的字段个数以及每次加的列的默认值保存在tables系统表的“se_private_data”字段中。 dd::Table::se_private_data::instant_col:第一次instant add column之前表上的列的个数。 dd::Column::se_private_data::default_null:标识instant column的默认值是否为NULL。 dd::Column::se_private_data::default:当instant column的默认值不是NULL时存储具体的默认值,column default value需要从InnoDB类型byte转换成“se_private_data”中的char类型。
  • 8.1.3.330 表1 8.1.3.330新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 无 - - - 解决问题 insert into select语句在计划生成阶段core,执行select部分不会core。 ORCLAUSE转换,对两个相同的sublink替换,将其指向同一个OpExpr,再次提升时在OffsetVarNodes中会将varno调整两次,造成后续core。 8.1.3.330以前版本 升级到8.1.3.330及以上 列存轻量化用例概率触发core:CStorePartitionInsert::findBiggestPartition。 列存分区表统计bulkloadUsedMemSize, 将update算子和insert算子混在一起统计,但是在判断是刷盘到disk时,内存自适应的大小是根据每个算子估出来的,导致g_bulkloadUsedMemSize统计常常大于估算值,update算子占用内存到估算内存临界值时,可能造成insert算子一条数据都无法插入。 8.1.3.330以前版本 出现wait ccn排队,但是看资源池的估算内存和占用内存,以及并发数未到排队阈值。 作业在CCN排队时无法进行全局内存校准,阻塞了作业。 8.1.3.330以前版本 用户直接查表没有权限 ,但是嵌套一层查询就可以查到。 light proxy的权限检查是在CN的checkLightQuery中调用权限校验公共函数ExecCheckRTPerms实现的,在DN上不会再进行权限检查。而在调用ExecCheckRTPerms时,其入参rangeTables需要是RTE_RELATION。否则会在ExecCheckRTEPerms中直接返回true。当是嵌套SQL时,类型是RTE_SUBQUERY,绕过了权限检查。 8.1.3.330以前版本 作业运行过程中偶现删除语句报错,报错信息为canceling statement due to statement timeout。 w报文未重新设置事务时间,导致线程复用。 8.1.3.330以前版本 json类型查询内存泄露,导致重分布占用大量内存影响业务。 在jsonb的out函数中存在内存未释放问题,数据量大时出现堆积造成使用内存高。 8.1.3.330以前版本 作业并发执行报错:tuple concurrently updated。 分区和表的oid相同,analyze时使用分区的oid更新了pg_object,实质上是将表的pg_object记录更新。此时有并发的DDL操作,例如alter table同时更新了表的pg_object记录,就会出现并发更新的报错。 8.1.3.330以前版本
  • 8.1.3.325 表2 8.1.3.325新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 新增支持GB18030_2022的字符编码。 支持禁用子查询hint功能。 GDS外表兼容utf8非法字符。 - - - 解决问题 DN节点重启,日志截断,集群出现hang问题。 stream线程报错打印日志时,响应了cancel信号,再次打印日志会引发hang问题。 8.1.3.320 升级到8.1.3.325。 业务表创建偶现报错:relation “xxx” already exists。 业务偶现报错:could not read block xxx in file "xxx"。 OID使用超过42亿之后重新开始分配,在复用过程中引起业务偶现报错。 8.1.3.323及以下版本 DN备机checkpoint无法成功,导致备机xlog日志无法回收,持续堆积。 DN备机在redo checkpoint时,如果看到有不完整的btree分裂就会报告RM 11问题,实际上可能是btree分裂失败或者处于btree分裂过程中。 8.1.3.323及以下版本 列存表执行轻量化update和后台执行autovacuum并发操作时报错:Unsupported to update different rows with the same cuid and col in light update。 在轻量化update中,不支持使用相同的cuid和col更新不同的行。 8.1.3.323及以下版本 某些场景no_merge的hint操作不生效。 不支持禁用子查询hint功能。 8.1.3.323及以下版本 后台执行长时间查询语句时,通过CTRL + C方式结束语句未等语句彻底退出,又通过CTRL + Z方式退出gsql客户端,会导致语句残留。 CN收到CTRL + C的取消信号后,CN线程处于报错长跳转流程中,此时去调用EmitErrorReport,而EmitErrorReport未响应信号。 8.1.3.323及以下版本 使用大宽表与实时表做关联更新时出现内存占用率太高,影响性能。 使用大宽表与实时表做关联更新,更新时update会将无关列加上,导致执行计划做优化器估算时内存占用率太高,影响性能。 8.1.3.323及以下版本 ShareScan计划中,存放CTE的tuplestore和batchstore的内存不能扩展易产生下盘。 ShareScan执行计划结构体中的cteMaxMem未进行copy、read和write处理,导致DN上在CTE的执行计划上未获取到该值,导致创建的保存CTE结果集的tuplestore和batchstore无法进行内存扩展而下盘。 8.1.3.323及以下版本 执行列存轻量化update报错:could not determine data type of parameter。 在执行计划的Remote query中,创建parame参数为其在基表中的位置,且系统列也匹配不上该参数。 8.1.3.323及以下版本
  • 8.1.3.320 表4 8.1.3.320新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 truncate、exchange与select并发: 新增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下发的所有查询语句,自动起事务,不支持该特性。 - - - 支持控制LIMIT语句是否启用early stop优化: 新增GUC参数enable_limit_stop,控制LIMIT语句是否启用early stop优化。 - - - 解决问题 语句级估算内存超过max_process_memory限制,导致ccn排队。 语句级估算内存超过max_process_memory限制。 8.1.3.310及以下版本 升级到8.1.3.320及以上版本。具体升级策略请参见版本收编策略。 执行merge报错:value xxx is out of range for type integer。 pg_toast_get_baseid()函数中使用int接口处理OID。 8.1.3.310及以下版本 查询20万行数据大表的脏页率视图,内存占用大。 查询数据的时候,查询统计信息的内置函数中创建的链表内每个结点上申请了内存空间用于存放tupStatus,查询结束后,仅释放了链表上结点的内存,结点内申请的内存未释放。 8.1.1.x版本 Vacuum执行超时被查杀后,部分DN出现线程残留,无法响应信号,阻塞其他语句执行。 由于btvacuumscan中未响应信号,导致Vacuum执行超时被查杀后,部分dn出现线程残留,无法响应信号。 8.1.1.x版本 对MySQL兼容库中的分区表、时序表执行analyze百分比采样操作时报错:unsupported feature with temporary/unlogged table for partitioned table。 由于8.1.3版本中为了兼容MySQL中CREATE TABLE LIKE语法,默认继承模式为INCLUDING ALL,且执行analyze百分比采样时,含有自动创建临时复制表命令,导致analyze时出现报错。 8.1.3.310及以下版本 冷热表的select查询语句触发runtime autoanalyze,性能慢。 执行truncate partition,exchange partition,drop partition,alter distribute,alter column type这五种操作后,再执行select该表会触发autoanalyze。 8.1.3.310及以下版本 pg_session_wlmstat中elapsed_time与TOP SQL实际执行的时间不一致。 查询pg_session_wlmstat视图,语句处于RUNNING状态时elapsed_time过大。 8.0.x 给外表执行grant select权限时报错:has no distribute type。 obs dfs server只写外表没有指定默认的分布方式导致报错。 8.1.3.310及以下版本
  • 时区 表9 时区 变更类型 序号 名称 变更描述 修改 1 Asia/Beijing北京时区的定义改为与Asia/Shanghai一致 1901年前的时区偏移从08:00:00调整为08:05:43。 新增了1940年至1949年的夏令时规则。 1940年6月1号到10月12号采用夏令时。 1941年3月15号到11月1号采用夏令时。 1942年1月31日直到1945年9月1号都采用夏令时,这三年都使用夏令时区是因为期间发生了二战,政府没有在进行时区规则全国调整。 1946年05月15日到09月31日采用夏令时。 1947年04月15日到10月31日采用夏令时。 1948年05月01日到09月30日采用夏令时。 1949年05月01日到09月30日采用夏令时。 1986年至1991年间的夏令时规则也进行了调整。 1986至1991年夏令时调整从凌晨零点改为凌晨两点。 1987至1991年夏令时调整到标准时区从9月10号以后第一个周日改为11号以后第一个周日。 2 Asia/Shanghai定义修改 1901年前的时区偏移从08:05:57调整为08:05:43。 调整1940至1941年夏令时规则。 1940年夏令时时间,从6月3日到10月1日改为6月1日到10月12日。 1941年夏令时时间,从3月16日到10月1日改为3月15日到11月1日。 新增了1942年至1949年夏令时规则。 1942年1月31日直到1945年9月1号都采用夏令时,这三年都使用夏令时区是因为期间发生了二战,政府没有在进行时区规则全国调整。 1946年05月15日到09月31日采用夏令时。 1947年04月15日到10月31日采用夏令时。 1948年05月01日到09月30日采用夏令时。 1949年05月01日到09月30日采用夏令时。 1986年至1991年间的夏令时规则也进行了调整。 1986至1991年夏令时调整从凌晨零点改为凌晨两点。 1987至1991年夏令时调整到标准时区从9月10号以后第一个周日改为11号以后第一个周日。 3 Asia/Urumqi 1980年5月后的时区偏移从东八区调整为东六区。 4 原民国时期按照物理时区定义的五大时区调整为两大时区 Asia/Harbin(长白时区),Asia/Chongqing(陇蜀时区),Asia/Shanghai(中原标准时区)时区名保留,定义都指向新定义的Asia/Shanghai(中国标准时区)。全国统一使用。 Asia/Kashgar(昆仑时区),Asia/Urumqi(新藏时区)时区名保留,定义都指向新定义的Asia/Urumqi(乌鲁木齐时区)。当地同时使用两个时区定义。 5 初始化默认时区可能会变更 数据库初始化时会评估一个最符合操作系时区的数据库内部支持时区作为默认时区。因数据库内部支持的时区定义变化,可能会导致初始化默认时区有变化。
  • GUC参数 表8 GUC参数 变更类型 序号 名称 变更描述 新增 1 wal_compression_level PFI日志压缩功能zlib压缩级别,默认9。 2 wal_compression PFI日志压缩功能开关,默认关闭。 3 max_xlog_backup_size xlog日志备份大小。当节点备份的xlog日志size超过该值时,自动删除备份的最旧xlog日志,直到备份日志size小于该值的90%。 4 max_cache_partition_num 表示在重分布过程中,最多在内存中保留的分区数量,多余该数量,把最早的分区按CU格式下盘。 5 password_encryption_type 该参数决定采用何种加密方式对用户密码进行加密存储。新增取值2,表示采用sha256方式对密码加密。 如果当前集群为8.0.0及以下版本升级到当前版本,该参数的默认值为保持前向兼容和原低版本集群一致,即默认值保持向前兼容仍旧是1;新安装集群默认值为2。 6 join_num_distinct 控制join列的默认distinct值,默认值-20。 7 cost_model_version 控制本次cost估算优化是否生效的参数,默认值为1,代表生效。 8 qual_num_distinct 控制过滤列的默认distinct值,默认值200。 9 behavior_compat_options 新增varray_verification选项,支持回退此次新增的校验。 10 behavior_compat_options 新增check_function_conflicts选项 支持对IMMUTABLE函数内部是否有非IMMUTABLE行为的校验。 11 auto_process_residualfile 自动记录残留文件功能开关。默认为true,表示功能打开。 12 default_colversion 用于指定用户创建列存表时的默认建表格式,默认格式为1.0。 13 enable_partition_dynamic_pruning 分区表扫描是否支持动态剪枝,默认打开(支持动态剪枝)。 14 enable_join_pseudoconst 控制是否在等于常量的join表达式上生成join表达式,类似t1 inner join t2 on t1.a=t2.a where t1.a = 1场景下,可以根据t1.a=t2.a生成join表达式(以前的时候这类join条件不能做join cond)。 15 view_independent 参数作用:控制视图依赖解耦功能的开关。 默认值:off。 16 enable_view_update 支持单表视图更新。 修改 17 enable_index_nestloop enable_index_nestloop 从C80以及之前的版本升级到最新的补丁版本保持off。 enable_index_nestloop 从6.5.0或6.5.0版本升级上来,保持前向兼容。 enable_index_nestloop 安装默认on. 18 archive_mode xlog日志归档开关,默认值从off变更为on;在部分场景对性能有小幅影响,性能比拼等POC场景建议手动规避。 19 cost_param 默认值修改为16,对应本次的cost估算优化内容。 20 rewrite_rule 去除partialpush(部分下推)参数选项。 21 behavior_compat_options 新增strict_concat_functions参数选项,用作函数textanycat和anytextcat的前向兼容。 22 behavior_compat_options 增加'strict_text_concat_td'选项,TD模式下使textcat/textanycat/anytextcat变为strict函数。 23 behavior_compat_options 增加strict_text_concat_td选项,兼容TD模式下NULL的拼接行为。 24 behavior_compat_options 增加bpchar_text_without_rtrim选项,兼容TD模式下bpchar字符串操作对尾部空格处理的风格。
  • 系统函数 表5 系统函数 变更类型 序号 名称 变更描述 新增 1 pgxc_get_residualfiles pg_get_residualfiles的cn统一查询函数。 2 pgxc_rm_residualfiles pg_rm_residualfiles的cn统一查询函数。 3 pgxc_verify_residualfiles pg_verify_residualfiles的cn统一查询函数。 4 query_to_xmlschema 把Query查询的内容映射成XML模式文档。 5 query_to_xml 把Query查询的内容映射成XML文档。 6 query_to_xml_and_xmlschema 把Query查询的内容映射成XML值和模式文档。 7 table_to_xmlschema 把关系表的内容映射成XML模式文档。 8 table_to_xml 把关系表的内容映射成XML值。 9 table_to_xml_and_xmlschema 把关系表的内容映射成XML值和模式文档。 10 cursor_to_xmlschema 把游标查询的内容映射成XML模式文档。 11 cursor_to_xml 把游标查询的内容映射成XML文档。 12 schema_to_xmlschema 把整个模式的内容映射成XML模式文档。 13 schema_to_xml 把整个模式的内容映射成XML文档。 14 schema_to_xml_and_xmlschema 把整个模式的内容映射成XML值和模式文档。 15 database_to_xmlschema 把整个数据库的内容映射成XML模式文档。 16 database_to_xml 把整个数据库的内容映射成XML文档。 17 database_to_xml_and_xmlschema 把整个数据库的内容映射成XML值和模式文档。 18 xmlpi 创建一个XML处理指令。 19 xmlcomment 创建一个使用指定文本作为内容的XML注释。 20 xmlserialize 从xml类型的值生成一个字符串。 21 xmlparse 从字符数据中生成一个xml类型的值。 22 xpath 返回一个xml值的数组对应xpath表达式所产生的节点集。 23 get_instr_unique_sql_remote_cns 获得除当前CN节点外所有其他CN上面的unique sql数据。 24 xml_is_well_formed 检查text字符串是不是格式良好的xml值。 25 xml_is_well_formed_content 检查text字符串是不是格式良好的内容。 26 xml_is_well_formed_document 检查text字符串是不是格式良好的文档。 27 xmlconcat 将XML值组成的列表串接成一个单独的值。 28 xmlagg 聚集函数,将输入值串接起来。 29 IS DOCUMENT 判断参数值是一个正确的XML文档。 30 IS NOT DOCUMENT 判断参数值不是一个正确的XML文档。 31 xmlexists 判断参数中的XPath表达式是否返回任何结点。 32 xpath_exists 判断参数中的XPath表达式是否返回任何结点。 33 xmlelement 使用给定名称、属性和内容产生一个 XML 元素。 34 xmlforest 使用给定名称和内容产生一个元素的 XML 森林(序列)。 35 pg_xlog_replay_completion 显示当前DN Xlog redo的进度信息。 36 pg_data_sync_from_dummy_completion 显示当前DN 数据页从dummystandby传输的进度信息。 37 pg_stat_xlog_space 显示当前DN上Xlog空间使用信息。 38 pgxc_stat_xlog_space 显示所有主DN上Xlog空间使用信息。 39 xmlroot 修改一个 XML 值的根结点的属性。 40 pg_get_residualfiles 用于查询当前节点的所有残留文件列表。 41 pg_get_running_jobs 用于查询当前节点上正在运行的Job。 42 pg_is_residualfiles 用于从当前库中查询指定的relfilenode是否是残留文件。 43 pg_rm_residualfiles 用于将指定的残留文件列表中的文件删除。 44 pg_verify_residualfiles 用于验证指定的文件中记录的残留文件列表是否确实为残留文件。 45 table_distribution 增加一个参数、参数类型为regclass的table_distribution函数。 46 XMLTABLE 支持XMLTABLE函数用于解析XML数据。 修改 47 pgxc_get_senders_catchup_time 增加catchup过程信息字段。 48 pg_stat_get_data_senders 增加catchup过程信息字段。 49 pgxc_get_thread_wait_status 增加参数num_node_display。 50 pg_stat_get_status 增加参数num_node_display。 51 pg_catalog.pgxc_get_wlm_session_info_bytime 第一个参数从区分大小写修改为不区分大小写。
  • 系统视图 表6 系统视图 变更类型 序号 名称 变更描述 新增 1 pg_job_single 单节点job信息。 2 pg_job 用于向前兼容pg_job系统表,分布式pg_job_single集合。 3 pgxc_get_stat_all_partitions 获取所有分区表各个分区的insert/update/delete/live/dead元组数及脏页率信息。 4 gs_view_dependency 级联查询视图的依赖关系,是上面两个函数的union。 修改 5 pgxc_get_instr_unique_sql 使用get_instr_unique_sql_remote_cns获得其他CN上的unique sql数据。 6 pg_stat_replication 修复功能。 7 pg_get_senders_catchup_time 增加catchup过程信息字段。 8 pg_catalog.gs_wlm_operator_history 增加nodename字段。 9 pg_catalog.pgxc_wlm_operator_history 增加nodename字段。 10 pg_catalog.pgxc_wlm_operator_info 增加nodename字段。
  • 系统表 表4 系统表 变更类型 序号 名称 变更描述 新增 1 dbms_om.gs_wlm_session_info 新增系统表。 2 dbms_om.gs_wlm_operator_info 新增系统表。 修改 3 pg_jobs 对应老系统表pg_job,元数据关系使用oid关联,由于共享系统表已满,无法在一个事务中删除后添加,因此重命名pg_job_proc得来。 4 pg_proc 将函数textanycat和anytextcat修改为非STRICT函数。 5 pg_proc 修改函数database_to_xml、database_to_xmlschema、database_to_xml_and_xmlschema为非STRICT函数。 6 pg_catalog.gs_wlm_session_info 修改为同名视图。 7 pg_catalog.gs_wlm_operator_info 修改为同名视图。 增加nodename字段。 8 pg_catalog.gs_wlm_ec_operator_info 修改为同名视图。 9 pg_catalog.gs_wlm_ec_operator_info 修改为同名视图。 增加nodename,plan_node_name,ec_operator,ec_fetch_count四个输出字段。
  • SQL语法 表2 SQL语法 变更类型 序号 名称 变更描述 新增 1 列存分区表支持split操作 列存分区表支持split操作。 2 CREATE TABLE tbl(LIKE tbl2 INCLUDING DROPCOLUMNS ) 新增支持LIKE DROPCOLUMNS语法。 3 ALTER TABLE tbl DISTRIBUTE BY 新增支持修改表分布列语法。 4 ALTER TABLE set version 用于切换列存表的新老格式。 5 CREATE/ALTER FOREIGN TABLE Write Only 支持OBS的ORC格式写。 6 CREATE/ALTER FOREIGN TABLE Write Only 支持HDFS的ORC格式写。 7 XML类型 支持在表、函数中使用XML数据类型。 8 ALTER VIEW alter view viewname REBUILD; 修改 9 VACUUM FULL vacuum full同一张表并发操作时会发生死锁。 10 DROP TEXT SEARCH CONFIGURATION 如果待删除的TEXT SEARCH CONFIGURATION是当前的default_text_search_config则报错,删除失败。 11 CREATE/ALTER ROLE/USER AUTHINFO 'ldap' 修改原有的指定用户认证类型是ldap的语法,去除64个字符的限制。 12 CREATE USER/ROLE with authinfo 'ldap' password disable 修改创建ldap用户的语法。 13 ALTER USER/ROLE with authinfo 'ldap' password disable 修改更新ldap用户的语法。 删除 14 ALTER TABLE 分区表 exchange with unlogg表 禁止分区表与unlogged表做exchange交换。 15 ALTER TABLE ... inherit修改继承关系功能 优化器未对表继承做适配,需封禁alter table inherit接口。
  • 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时也进行审计。
  • 系统表 表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,用于支持大小写不敏感行为。
  • 系统函数 表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。
  • 关键字 表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。
  • 系统视图 表6 系统视图 变更类型 序号 名称 变更描述 新增 1 SHOW_TSC_INFO 用于查看当前节点TSC换算信息。 2 SHOW_ALL_TSC_INFO 用于查看所有节点TSC换算信息。 3 GET_TSC_INFO 用于重新获取一次当前节点的TSC换算信息,仅用于判断是否稳定,不更新内存信息。 4 GET_ALL_TSC_INFO 用于重新获取一次所有节点的TSC换算信息,仅用于判断是否稳定,不更新内存信息。 5 PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS 用于展示实体表在DN所占磁盘空间倾斜率。 6 PGXC_STAT_OBJECT 查询全集群所有节点的pg_stat_object信息。 7 PG_GLOBAL_TEMP_ATTACHED_PIDS 查看全局临时表在当前节点占有资源的会话信息。 8 PGXC_GLOBAL_TEMP_ATTACHED_PIDS 查看全局临时表在所有节点占有资源的会话信息。 9 PG_STATS_EXT_EXPRS 用于查询保存在系统表pg_statistic_data中的表达式统计信息数据。 10 PV_RUNTIME_EXPRSTATS 基于pg_stat_get_runtime_exprstats函数建立,用于查询动态采样生成的表达式统计信息。 11 PG_PLAN_BASELINE 新增系统视图,保存sql和plan之间的绑定关系。 12 PG_STAT_OBJECT_EXT 新增系统视图,通过在pgxc_parallel_query内层为视图添加查询条件,从而加速返回pgxc_stat_object相应查询条件返回的结果。 修改 13 GS_WLM_SESSION_STATISTICS 新增列stmt_type标识语句类型。 14 PGXC_WLM_SESSION_STATISTICS 新增列stmt_type标识语句类型。 15 GS_WLM_SESSION_HISTORY 新增列stmt_type标识语句类型。 16 GS_WLM_SESSION_INFO 新增列stmt_type标识语句类型。 17 PGXC_WLM_SESSION_HISTORY 新增列stmt_type标识语句类型。 18 PGXC_WLM_SESSION_INFO 新增列stmt_type标识语句类型。 19 GS_RESPOOL_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 20 PGXC_RESPOOL_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 21 PG_TOTAL_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 22 PGXC_TOTAL_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 23 PGXC_RESPOOL_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 24 PGXC_WLM_USER_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 25 GS_WLM_SESSION_STATISTICS/PGXC_WLM_SESSION_STATISTICS 新增except_info显示语句触发的异常规则信息。 26 GS_WLM_SESSION_INFO/PGXC_WLM_SESSION_INFO 新增except_info显示语句触发的异常规则信息。 27 GS_WLM_SESSION_HISTORY/PGXC_WLM_SESSION_HISTORY 新增except_info显示语句触发的异常规则信息。 28 REDACTION_COLUMNS redaction_columns修改视图定义,新增字段policy_name。 29 PG_STATS PG_STATS视图中增加partname来表示分区。 30 PV_RUNTIME_ATTSTATS pg_catalog.pv_runtime_attstats视图中增加partname来表示分区。 31 GS_WLM_OPERATOR_STATISTICS 新增字段:父节点id、执行次数、进度、网络、磁盘读写。 32 PGXC_WLM_OPERATOR_STATISTICS 新增字段:父节点id、执行次数、进度、网络、磁盘读写。 33 PGXC_STAT_OBJECT 跟随pg_stat_object一起更改,预留字段extra1改名为last_autovacuum_csn。
  • 行为变更 表7 行为变更 变更类型 序号 名称 变更描述 新增 1 分区视图依赖变化 8.2.1以前版本,没有对select partition()或者partition for()语句的视图建立视图依赖,造成查询报错。 8.2.1版本后新增分区oid依赖,对于drop分区或者修改分区范围值在视图解耦场景下引发视图重建,非视图依赖场景下会报错。 修改 2 增加GTM上gtm_max_trans参数取值上限。 先将线程最大限制调大,可以给现网一个逃生通道,解决某些局点集群规模大,业务并发高,可能存在达到线程上限进而无法连接的问题。 3 max_process_memory CN调整为DN的一半。 4 Catchup流程 去掉了数据页Catchup的事务锁,Catchup不再和DDL之间有互等关系;增加了LwLock,通过事务提交的LwLock进行Catchup以及DDL业务之间的串行操作,避免Catchup访问到空文件。 5 备DN checkpoint时机 备DN的checkpoint不再等待15min按周期运行,而且redo到checkpoint点后,会强制执行一次checkpoint,避免大数据xlog导入场景下,备DN的Rto过长。 6 备DN文件关闭时机 备DN执行heap_xlog_newpage以及seq_redo时,首页面写入数据后,会强制关闭。 7 indexscan hint可包含indexonlyscan indexscan hint可包含indexscan和indexonlyscan;与indexonlyscan hint同时存在时,indexonlyscan优先生效。 8 大小写表达式不支持roughcheck 大小写表达式不再支持roughcheck,因cu的minmax基于C排序计算,下推会有结果集问题。 9 多count(distinct)重写时,使用CTE进行重写 重写行为发生变化,非share scan场景不影响后续展开过程,share scan场景生成stream CTE的计划。 10 TopSQL子语句监控 TopSQL子语句监控规格从递归打开,变更为仅记录第一层子语句。 11 ArrayLockFreeQueue 无锁队列初始化分配内存不会超过1GB。 12 Explain Explain结果集新增显示unique sql id。 13 Explain Explain+查询语句的unique sql id与查询语句相同。 14 GS/PGXC_WLM_SESSION_STATISTICS视图 GS/PGXC_WLM_SESSION_STATISTICS视图新增unique sql id字段。 15 GROUP BY后不需体现所有非聚合函数查询字段 8.1.3版本处理时会将非聚合函数查询字段补位min(xx)的形式,8.2.0及以上版本修改为取该列随机值。 8.2.0版本对于多列非聚合函数查询字段取值时取该列非NULL值,会出现结果集不同行场景,8.2.1版本修改为结果集为相同行。 16 alter function owner to superuser 禁止了sysadmin用户修改函数/存储过程的owner到超级用户的场景。保留超级用户change到超级用户的场景。 17 (+)连接顺序变化,会导致带有nvl等表达式的结果集产生变化 (+)连接顺序与Oracle看齐,原(+)连接顺序与join关联顺序相关,改写后带有nvl等相关表达式的关联条件顺序及结果集会有变化。 18 hstore表并发更新同一行会直接报错,不再等待后报错 hstore表并发更新同一行会直接报错,不再等待。 之前的行为是:(1)并发update同一行等待后报错;(2)并发delete同一行等待后成功;(3)并发delete和update同一行等待后报错。修改为统一的行为。 19 Catchup不再拿一级锁 Catchup不再拿一级锁。 20 连续的failover逻辑中,只有首次会进行从DN到备DN的数据同步 连续的failover逻辑中,只有首次会进行从DN到备DN的数据同步。 21 不同session同名临时表执行相同SQL语句时unique sql id一致 8.2.1以前版本不同session同名临时表schema name不同,直接使用后生成的unique sql id就也不同。8.2.1版本修改后不同session同名临时表根据schema name替换固定字符串,保证执行相同SQL语句时unique sql id一致。 22 细粒度容灾支持主集群degraded状态下备份 细粒度容灾在支持主集群degraded状态下备份,例外场景主集群主节点无正常CN导致的degraded不支持。 23 视图解耦 当访问到无效视图时,不触发自动重建动作,即不更新系统表,而是在本地展开
  • 系统函数 表5 系统函数 变更类型 序号 名称 变更描述 新增 1 SHOW_TSC_INFO() 用于查看当前节点TSC换算信息。 2 GET_TSC_INFO() 用于重新获取一次当前节点的TSC换算信息,仅用于判断是否稳定,不更新内存信息。 3 TEST_TSC_INFO(time double, loops int) 用于测试TSC换算时间的准确性,其中时间不得大于60s,循环次数范围值[1,10]。 4 GET_FIRST_VALUE 返回当前列第一行值。 5 READ_GLOBAL_VAR 用于读取例如my.var的全局session级变量。 6 GS_QUERY_PENALTY(query_id) 新增手动降级函数,入参为query_id。 7 CURRENT_TEMP_SCHEMA 显示当前会话的临时schema。 8 GS_WAIT_CURRENT_ACTIVE_DDL_COMPLETE 等待所有线程的guc参数生效。 9 PGXC_WAIT_CURRENT_ACTIVE_DDL_COMPLETE 等待所有线程的guc参数生效。 10 GS_SWITCH_PART_RELFILENODE 用于交换两个指定分区的filenode。 11 REFRESH_HOT_STORAGE(text) 用于将指定冷热表的所有分区数据全部刷到OBS上。返回的数值为执行完该函数后,当前多温表中在DN上冷分区的个数。 12 REFRESH_HOT_STORAGE(text,text) 用于将指定冷热表的分区数据刷到OBS上。返回的数值为执行完该函数后,当前该分区在DN上冷分区的个数。 13 PG_QUERY_AUDIT_DETAILS 通过调用pgxc_query_audit或pg_query_audit来解析object_details、object_name字段。 14 PGXC_HSTORE_DELTA_INFO 提供系统函数pgxc_hstore_delta_info('relname'), 从CN上查询HStore表的Delta表上各种类型记录的数量、表的大小等信息,用于辅助定位问题。 15 COPY_PARTITION_STATS 将一个表的分区统计信息复制给另外一个不存在统计信息的分区。 16 UPDATE_PARTITION_RELSTATS 更新分区表的统计信息relpages和reltuples。 17 PG_GET_STAT_EXPRESSIONS 用于获取创建的表达式统计信息中表达式的文本表示形式。 18 GS_HSTORE_COMPACTION 手动触发hstore表的compaction,不受autovacuum_compaction_rows_limit控制,第一个参数传入表名,第二个参数设置小CU行数的阈值,第二个参数不设置则默认100。 19 PG_SCAN_RESIDUALFILES 新增残留文件扫描系统函数。 20 PG_GET_SCAN_RESIDUALFILES 新增获取已扫描的残留文件列表系统函数。 21 PGXC_LOCK_WAIT_STATUS() 集群锁等待关系查询。 22 PG_CANCEL_BACKEND(pid, msg) 中断pid会话时支持传入指定消息作为报错信息提示。 23 PG_GET_STATISTICSOBJDEF 新增pg_get_statisticsobjdef函数来获取表达式统计信息的创建语句。 24 PG_STAT_GET_ALL 输入namespace.relname,返回当前CN哈希表中pg_stat_object中该表对应的tuple。 25 PGXC_STAT_GET_ALL 输入namespace和relname,返回所有CN上哈希表中pg_stat_object中该表对应的tuple。 26 PGXC_STAT_OBJECT_BYNAME 新增系统函数,通过输入namespace.relname,加速返回pgxc_stat_object相应relname限定的记录。 27 PG_DUMP_PLANMGMT_INFO 实时刷入待保存计划,便于下一步处理bind、unbind、drop等操作。 28 PG_FOREIGN_INSERT_COMMIT 用于对extrenal schema表对象执行insert时CN给DN下发rename计划。 29 PG_SYSTEM_WITH_TOAST_CREATE 为pg_external_namespace系统表创建toast表。 30 PG_GET_EXTERNAL_SCHEMA_TABLE_OPTIONS 获取external schema表对象的option。 31 PG_GET_EXTERNAL_SCHEMA_TABLE_COL 获取external schema表对象的列元数据。 修改 32 GS_WLM_REBUILD_SCHEMA_HASH(oid) 修改入参从int改为OID。 33 GS_WLM_ALL_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 34 GS_GET_RESPOOL_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed)。 35 GS_WLM_USER_RESOURCE_INFO 新增网络收发速率监控(send_speed/recv_speed),新增入参username。 36 PG_STAT_GET_WLM_REALTIME_SESSION_INFO 新增except_info显示语句触发的异常规则信息。 37 GS_TABLE_DISTRIBUTION 增加字段relpersistence: t:本地临时表 g:全局临时表 u:unlogged表 p:普通表 增加字段sessionid 全局临时表的会话线程id。 38 PG_FAST_TABLE_SIZE 增加字段relpersistence: t:本地临时表 g:全局临时表 u:unlogged表 p:普通表 增加字段sessionid 全局临时表的会话线程id。 39 PG_LIFECYCLE_TABLE_DATA_DISTRIBUTE 修改函数使得非管理员用户可以使用。 40 PG_QUERY_AUDIT 审计日志中新增object_details、result_rows、error_code列,修改pg_query_audit输出参数,新增输出三列。 41 PGXC_QUERY_AUDIT 审计日志中新增object_details、result_rows、error_code列,修改pgxc_query_audit输出参数,新增输出三列。 42 GET_COL_CU_INFO 新增参数dirty_percent, 取值范围1-100, 默认值70。 新增返回列dirty_cu_count,返回删除率大于dirty_percent的CU数量。 43 PG_STAT_GET_WLM_REALTIME_OPERATOR_INFO 新增字段:父节点id、执行次数、进度、网络、磁盘读写。 44 PG_STAT_GET_WLM_REALTIME_OPERATOR_INFO 新增入参queryid,查询指定queryid的语句信息。 45 TRUNC(timestamp with time zone)函数修改稳定性类型 该函数之前定义的为immutable,但是根据实际函数的应用场景应该是stable的,修改前在某些条件下会性能差。 46 PG_STAT_GET_WLM_REALTIME_SESSION_INFO 新增列stmt_type字段标识语句类型。 47 PG_STAT_GET_WLM_REALTIME_SESSION_INFO 新增unique_sql_id字段。
  • 系统表 表4 系统表 变更类型 序号 名称 变更描述 新增 1 PG_STAT_OBJECT autovacuum线程记录统计信息和autovacuum效果信息到系统表pg_stat_object中。 2 PG_PLAN_BASELINE 保存sql和plan之间的绑定关系。 3 PG_PROC_REDACT 新增系统表,记录手动不脱敏函数。 修改 4 GS_WLM_SESSION_INFO 新增字段stmt_type标识语句查询类型。 5 GS_RESPOOL_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 6 GS_WLM_USER_RESOURCE_HISTORY 新增网络收发速率监控(send_speed/recv_speed)。 7 PG_REDACTION_POLICY 新增policy_order字段,记录同一个表对象关联的脱敏策略的优先级次序,序号越大表示越后创建,优先级更高。 8 PG_REDACTION_COLUMN 新增policy_oid字段,记录当前脱敏列信息对应的是哪个脱敏策略。8.2.1版本后,脱敏策略的脱敏列是一对多的关系,脱敏策略的表对象是多对一关系。 9 PG_STAT_OBJECT 将预留字段extra1改名为last_autovacuum_csn。 10 GS_WLM_SESSION_INFO 增加unique_plan_id、sql_hash、plan_hash、use_plan_baseline字段。
  • 8.2.1.119 表1 8.2.1.119新增功能/解决问题列表 类别 功能或问题描述 问题原因 问题出现版本 修复建议 新增功能 窗口函数last_value支持ignore nulls功能,兼容Redshift。 - - - 解决问题 列存表使用try_cast函数报错。 try_cast函数未适配向量化执行引擎,导致列存表执行时报错。 8.2.1.100及以下版本 升级到8.2.1.119。 重启集群后,insert过慢长时间无法结束。 重启集群后,insert时需要使用索引扫描全量数据而影响性能。 8.2.1.100及以下版本 CCN计数异常时,未触发校准机制,导致CCN排队加剧。 CCN计数异常时,由于代码处理bug,未触发校准机制。 8.2.1.100及以下版本 JDBC中使用PBE协议插入数据,因主键冲突报错导致CN内存泄漏。 此场景下使用CN轻量化流程进行处理,事务结束后轻量化对象未释放造成内存堆积。 8.2.1.100及以下版本 SQL语句中设置了enable_stream_ctescan的GUC HINT,生成计划时CTE估算内存超阈值后,生成计划有误导致执行失败。 SQL语句中设置了enable_stream_ctescan的GUC HINT后,生成计划时CTE估算内存超阈值后,回退成非share scan的计划,但由于包含Hint回退不彻底,生成的计划包含错误节点,导致后续执行失败。 8.2.1.100及以下版本 备份metadata元数据到OBS上超过64MB时,恢复时概率性解压元数据报错,导致恢复失败。 备份metadata元数据超过64MB时,从OBS下载需要分段下载,下载最后一段buffers由于代码漏洞导致被丢弃,下载的metadata损坏,导致无法解压。 8.2.1.100及以下版本 hstore delta表analyze采样占用内存高。 hstore delta表analyze采样时,delta合并I记录占用内存较多,需要即时释放toast数据及delta数据反序列化占用的空间。 8.2.1.100及以下版本 CTE查询中有volatile函数,且只被引用一次时,不能下推,导致查询性能差。 821版本增加CTE查询中有volatile函数时不能下推的约束,但针对CTE只被引用一次的场景,需要放开约束,支持其下推。 8.2.1.100及以下版本 复杂查询的临时文件下盘,xfs系统预占空间过大,下盘文件多时导致集群只读。 复杂查询的临时文件下盘,xfs系统每个下盘文件预占16MB,下盘文件多时导致集群只读,需要减少下盘文件预占磁盘量。 8.2.1.100及以下版本
  • 解决方案 如果想要定期刷新域名DNS解析,不用重启Nginx服务器,可以通过在Nginx上配置Resolver实现。 示例一: Nginx服务器原“nginx.conf”配置: location /prod-url-test/ { ... proxy_pass http://$proxy_url; } 添加resolver后的配置:*.*.*.*为设备网络使用的公共DNS或本地DNS,可根据业务情况配置两个DNS,valid为解析结果有效期。 location /prod-url-test/ { resolver *.*.*.* *.*.*.* valid=300s; resolver_timeout 10s; set $proxy_url "prod-url-test.example.com"; proxy_pass http://$proxy_url; } 示例二: Nginx服务器原“nginx.conf”配置: location = /test/example1.txt{ expires 30s; rewrite ^/test/example2.txt break; proxy_pass https://test.example.com; } 添加resolver配置:*.*.*.*为设备网络使用的公共DNS或本地DNS,可根据业务情况配置两个DNS,valid为解析结果有效期。 set $var_host "test.example.com"; resolver *.*.*.* *.*.*.* valid=300s; resolver_timeout 10s; location = /test/example1.txt{ expires 30s; rewrite ^/test/example2.txtbreak; proxy_pass https://$var_host; proxy_set_header Host test.example.com; }
共100000条