【青梅快讯】惊喜不断,Greenplum 最新版本 6.13.0已发布

Greenplum 6.0自正式版发布以来,Greenplum保持每月一个小版本的迭代速率,持续为用户提供新功能和修复补丁,目前的最新版6.13.0。每个季度定期推送的青梅资讯系列中,小编将带你回顾Greenplum的新版本中的新特性和修复补丁信息。现在让我们来了解一下6.11到6.13版本中,Greenplum又带来了哪些惊喜。

青梅资讯Greneplum 6.13.0于2020年12月18日发布,累积更新的新功能和bug修复信息如下:​

Greenplum 6.13.0

新增功能

– 内置了全新的 VMware Tanzu Greenplum Connector for Apache NiFi 1.0.0.

该连接器提供了一种快速,简单,基于UI的方式来为Greenplum数据库搭建数据摄取管道,无需构建代码。连接器可以在VMware Tanzu Network(https://network.pivotal.io/products/pivotal-gpdb)上单独下载。

– GPSS 升级至1.5.0版本

  • 以前强制设置的负载配置文件ERROR_LIMIT属性改成了可选
  • 集成了开箱即用的Prometheus工具

– 增加了 advanced_password_check contrib 模块

  • 用户可以使用此模块为Greenplum数据库定制密码策略。

– Greenplum数据库查询优化器增加新的服务器配置参数

  • 该参数被用于index-only scan,此类查询仅从索引回应查询,而无需访问堆表(heap table)。此配置参数名为optimizer_enable_indexonlyscan,并且默认情况下启用。

修复bug列表

– 集群管理

  • 修复了gpstart的bug,在某些情况下cluster host无法访问时,gpstart可以继续启动进程;
  • 修复了使用gpconfig -s client_min_messages设置客户端消息传递级别(如“notice”或“warning”)失效的问题
  • 修复了当用户使用gpaddmirrors -p选项指定了有效的端口范围时,gpaddmirrors会生成类似这样的错误:Value of port offset supplied via -p option produces ports outside of the valid range. Mirror port base range must be between 6432 and 61000.

– 计划器(planner)

  • 修复了查询使用分组表达式(而非列名),且其他未分组目标引用了group key,会导致Postgres Planner崩溃或返回错误结果的问题。

 锁

  • 改进了锁行为,以避免在append-only(AO)表上创建多个索引时可能发生的死锁。

– 查询优化器

  • 修复了对Greenplum复制表的serial-type column的查询(创建的DISTRIBUTED REPLICATED) 不能在所有segment上返回一致的值的问题

– 执行器

  • 解决了Greenpum数据库在EntryDb(在主实例上运行的特殊QE)中运行某些系统功能时有时会返回错误结果的问题。
  • 解决了哈希表溢出到磁盘时可能导致segment fault的问题
  • 修复了当某些查询包含merge join和动态分布消除时,计划器会生成不正确的查询计划的问题。

– Segment 镜像

  • 修复了统计信息收集器收集镜像将统计信息时,内核Recv-Q缓冲区在Greenplum mirror segment实例上被占满,但由于镜像未处于热备用模式收集器未运行的问题。

– 存储:Segment 镜像

  • 更新了pg_rewind,以减少其执行的lstat操作的数量,从而提高大量数据文件的增量恢复的性能。

Greenplum 6.12.1

修复bug列表

– 服务器

  • 修复了可能导致Stand Master节点出错关闭的内存溢出问题。

– Postgres 计划器

  • 修复了选择在指定一个或多个空GROUP SETS的查询返回错误结果的问题。

– 查询优化器

  • 修复了当查询包含带有本地谓词和链接谓词的index join时,查询优化器未能执行分区消除,具有btree索引的表的查询时间比预期长的问题。

– 优化器

  • 修复了由于使用了全表扫描而非索引导致某些IN查询执行缓慢的问题。

– 集群管理

  • 修复了将mirror segment移动到备用host时,使用gprecoverseg -F失败的问题。
  • 修复了使用gprecoverseg进行segment的增量恢复失败,而未记录或报告任何错误的问题。

– analyzedb

  • 修复了在analyzedb过程中,当表被删除或重建时会导致analyzedb失败的问题。

– gpexpand

  • 修复了集群扩展的重分发阶段,当尝试扩展实例化试图时,返回错误:failed to expand: error ERROR: … is not a table 的问题。

– Metrics Collector

  • 修复了在某些情况下,GPCC 6.3.0 和6.3.1在查询监控器中无法显示可视查询计划的问题。
  • 修复了GPCC无法显示 CREATE TABLE AS SELECT…FROM和COPY(SELECT… FROM…) TO…等语句的指标。

– 优化器

  • 解决了在简化预处理过车中的约束时,GPORCA不会考虑将列与空数组进行比较的约束的情况,此类查询会导致GPORCA的崩溃。

– autovacuum

  • 解决了当autovacuum daemon在template0数据库上执行VACUUM操作时可能发生的致命错误。

– 资源组

  • 修复了如果一个较早的DROP RESOURCE GROUP命令无法删除资源组,可能会导致查询失败的问题。

– Query Dispatcher

  • 解决了可能导致事务错误地使用单阶段提交而非两阶段提交的问题
  • 解决了当query dispatcher需要刷新实例化视图时,可能会导致错误:ERROR: unrecognized node type: 2139062143 (copyfuncs.c:6059)的问题。

Greenplum 6.12.0

新增功能

  • 现支持使用带有gp_interconnect_proxy_address参数定义代理端口时segment 主机名
  • 增加了在执行TRUNCATE 命令对参照完整性的检查。
  • 支持诊断和数据收集工具Greenplum Magic Tool(GPMT)
  • 支持postgres_fdw PostgreSQL contrib模块

修复bug列表

– Query Execution

  • 当执行包含多字节字符的长查询时,Greenplum可能会错误的截断查询字符串(删除多字节字符),并且如果log_min_duration_statement设置为0,则可能随后写入无效的符号来分割日志。会导致gp_toolkit和Command Center的错误。该问题已被修复。
  • 修复了在表分区上执行CREATE UNIQUE INDEX会隐式更改分区的分发键的问题。

– 事务

  • 修复了在某些情况下,Greenplum数据库 master 重置会生成一个或多个孤立的、准备好的事务。
  • 修复了在某些情况下,由于检查点和xlog COMMIT PREPARE记录之间的竞争状况,Greenplum数据库在重启后生成PANIC的问题。

– 查询优化器

  • 修复了在某些情况下,当查询优化器尝试从包含子查询的谓词生成索引扫描时,Greenplum数据库会出现崩溃的问题。
  • 修复了由于查询优化器未生成唯一的扫描号来区分两个查询到外部表,事务中外部表上的第二个SELECT返回零条记录的问题。
  • 修复了由于对存储区边界值与较小的Epsilon进行不正确的比较,查询优化器在合并UNION和UNION ALL查询中的双精度值的统计信息存储区时,进入无限循环的情况。
  • 修复了当执行TRUNCATE和CREATE TABLE语句时,共享内存不足的问题。

– Postgres Planner

  • 修复了当查询的HAVING 子句包含子查询,且GROUP BY列集中也未指定盖子查询中引用的一个或者多个列时,Postgres Planner崩溃或产生不正确的结果的问题。
  • 修复了为具有GROUPING SETS的子查询创建查询计划时可能导致Query Dispatcher崩溃的问题。

– 资源组

  • 修复了无法将pg_resgroup_get_status(NULL:oid)上的查询结果保存到表的问题。

– gpbackup

  • 修复了当插入由bpchar分发的表中,并使用旧版bpchar哈希运算符时,行始终使用跳转一致哈希而不是旧式(模)哈希的问题。

Greenplum 6.11.2

新增功能

  • GPTEXT版本升级至3.4.5版本
  • Greenplum-Spark connector升级至2.0.0版本

修复bug列表

– 管理与监控

  • 修复了Greenplum从复制条目中排除外部可路由的loopback地址,会导致gpinitstandby和gpaddmirrors等实用程序失败的问题。

– GPORCA

  • 修复了GPORCA不对某些子查询使用索引扫描,可能会导致受影响的查询的性能下降的问题。
  • 如果使用CREATE TABLE .. AS语句从使用旧式(模)哈希算法的源表中创建具有非旧式(跳转一致)哈希算法分布的表,GPORCA将根据gp_use_legacy_hashops的值来分配数据; 但是,它会将表的分发策略哈希算法设置为原始表的值。如果分发策略与数据分发不匹配,这可能导致查询给出不正确的结果。该问题已被解决。
  • 修复了启用gp_use_legacy_hashops后,在为包含汇总的某些查询生成查询计划时,GPORCA可能会崩溃的问题。

– Metrics Collector

  • 修复了有时过早地释放工作文件条目可能会导致segment上的postmaster 进程重置,查询执行失败或segment PANIC的问题。

– Query Execution

  • 修复了gp_toolkit和GPCC的错误问题。当执行包含多字节字符的长查询时,Greenplum可能会错误地截断查询字符串(删除多字节字符),并且如果log_min_duration_statement设置为0,则可能随后写入无效的符号来分割日志,可能会导致gp_toolkit和GPCC的错误。

Greenplum 6.11.1

新增功能

– PXF升级至5.15.1

修复bug列表

– 查询优化器

  • 修复了当服务器将参数optimizer_join_order设置为experiative2时,包含至少一个左或右外部联接的相关子查询导致Greenplum数据库主数据库崩溃的问题。

– gpload

  • 修复了如果表列名称包含大写字母或特殊字符,gpload操作将失败的问题。

– GPORCA

  • 对于在子查询中包含外部引用的查询,例如select * from foo where foo.a = (select foo.b from bar),GPORCA在取消嵌套外部引用后始终使用子查询的结果。如果子查询不返回任何行,或者子查询包含一个在外部引用之下具有多个值的投影,则可能导致崩溃或错误的结果。该问题已被解决。

– gpfdists

  • 修复了如果在外部表定义的LOCATION子句中指定主机系统时,如果外部表未使用IP地址,使用gpfdists协议访问外部表的命令将失败的问题。

– gpstart

  • 修复了在无法访问该备用主段时,它不会尝试启动该备用主段,从而防止了启动期间的关联堆栈跟踪。

Greenplum 6.11.0

新增功能

  • GPORCA分区消除功能已得到增强,以支持有损分配强制转换的子集,这些子集具有顺序保留(增加)功能,包括timestamp::date and float::int.
  • PXF升级至5.15.0
  • GPCC 升级至6.3.0(4.11.0)版本,新增了工作量管理等其他新功能
  • DataDirect ODBC Drivers for Pivotal Greenplum 升级至07.16.0389 (B0562, U0408)。新版本支持以下数据类型:

修复bug列表

– 资源组

  • 修复了当运行查询由资源组管理时,由于锁问题,Greenplum数据库在管理失控查询(使用过多内存的查询)时会生成PANIC的问题。
  • 对于资源组管理的查询,由于VMEM使用率较高,因为计算出查询所使用的内存不正确,资源组用消息Canceling query because of high VMEM usage 取消查询。此问题已解决。

– VACUUM

  • 修复了在某些情况下,运行VACUUM会返回错误:found xmin <xid> from before relfrozenxid <frozen_xid>的问题。

– Segment Mirroring

  • 修复了在某些情况下,对Greenplum数据库segment实例执行增量恢复失败,由于恢复检查点创建不正确请求的WAL段消息已被删除的情况。

– analyzedb

  • 修复了analyticsb尝试更新一组表的统计信息时,当分析表运行时,其中一个表被删除然后重新创建,analyticsb会失败的问题。

– Query Execution

  • 修复了在运行多个查询负载很重时,某些查询随机失败并显示错误Error on receive from seg<ID>的问题。

– Postgres Planner

  • 修复了在某些情况下,GPCC取消DROP VIEW命令后,Greenplum数据库生成PANIC的问题。

– gpcheckcat

  • 修复了如果安装了gp_sparse_vector扩展,则gpcheckcat会因缺少或多余的条目检查错误而失败的问题。

– 查询优化器

  • 对于某些针对分区表的查询,当包含partition列的谓词执行显式转换时,GPORCA不会执行分区消除。GPORCA分区消除的功能已增强,以支持指定的查询类型。

– Postgres Planner

  • 修复了对于某些包含未指定关系的嵌套子查询且还包含嵌套GROUP BY子句的查询,Greenplum数据库生成了PANIC的问题。

– 服务器

  • Greenplum数据库不支持更改定义为分配键或具有约束的列的数据类型。尝试更改数据类型时,错误消息未明确指出原因。错误消息已更改为提供更多信息。

– Interconnect

  • 修复了在某些情况下Greenplum数据库使用代理进行互连通信(服务器配置参数gp_interconnect_type设置为proxy)时,Greenplum后台工作进程在postmaster进程终止后会成为孤立的进程的问题。
  • 当Greenplum数据库使用代理进行互连通信(服务器配置参数gp_interconnect_type设置为proxy)时,如果查询包含在segment实例上运行的多个并发子计划,则该查询可能已挂起。当Greenplum互连未正确处理并发子计划之间的通信时,查询将被挂起。此问题已解决。

– 集群管理-gpinitsystem

  • gpinitsystem会在调用gpconfig之前导出MASTER_DATA_DIRECTORY环境变量,以避免在Greenplum Database Appliance(DCA)上配置系统参数时引发警告消息。

往期快讯

Greenplum大数据平台简介

Greenplum 大数据平台基于MPP(大规模并行处理)架构,具有良好的弹性和线性扩展能力,内置并行存储、并行通讯、并行计算和优化技术,兼容 SQL 标准,具备强大、高效、安全的PB级结构化、半结构化和非结构化数据存储、处理和实时分析能力,同时支持涵盖OLTP型业务的混合负载,为客户打通业务-数据-洞见-业务的闭环,可部署于企业裸机、容器、私有云和公有云中,支撑着全球金融、证券、电信、政府、制造、交通运输等各行业的大量核心生产系统。Greenplum 大数据平台为全球各行各业提供具备实时处理、弹性扩容、弹性计算、混合负载、云原生和集成数据分析能力的强大的大数据引擎,目前广泛的应用于包括金融、保险、证券、通信、航空、物流、零售、媒体、政府、医疗、制造、能源等行业。

分享本博文:

2020 Greenplum峰会

点击了解更多信息

《Data Warehousing with Greenplum》

Greenplum官方书籍《Data Warehousing with Greenplum》。阅读它,以了解如何充分利用Greenplum的功能。

关注微信公众号

Greenplum中文社区

Greenplum官方微信群

扫码加入我们的技术讨论,请备注“网站”