 
     
      
       
        VMware Greenplum 7.0 Beta.0
       
      
      已于2022年12月15日正式发布,随后在2023年2月3日
      
       
        VMware Greenplum 7.0 Beta.1
       
      
      也正式上线,现在让我们通过本文一起了解Greenplum 7 Beta. 1 和Beta. 0 版本都引入了哪些新功能和变化。
     
      
       VMware Greenplum 7.0 Beta.1
      
     
      
       发布时间:
      
      
       2023年2月3日
      
     
- 
VMware Greenplum 7 Beta.1 版本现在提供以下扩展:ip4r、hll、PL/Java、Timestamp9、diskquota、PL/Container。 
- 
VMware Greenplum 7 包含从PostgreSQL数据库 
 
 REL_12_STABLE
 
 分支合并而来的代码。其中包括以下特性:- 
提供即时编译(JIT)功能,并且可以在PostgreSQL Planner和GPORCA中使用JIT。 
- 
对AOCO表使用 
 
 COPY TO
 
 命令时,可以指定表中的一部分列。
- 
 pg_appendonly
 
 表不再记录append-only存储选项,只在
 
 pg_class.reloptions
 
 中列出,这样可以极大减少
 
 pg_appendonly
 
 表的大小。
- 
增加新的视图,以支持在 
 
 CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL
 
 和
 
 pg_checksums
 
 操作中访问进度报告。
- 
 VACUUM
 
 可以在表的可见性映射(Visibility map)中识别仅包含已冻结元组的页面并跳过这些页面。对于大部分数据没有变化的大表,可以减少维护成本。新的
 
 VACUUM
 
 参数
 
 DISABLE_PAGE_SKIPPING
 
 可以强制
 
 VACUUM
 
 所有冻结页面,这种情况应该只在硬件或软件问题导致数据库损坏时发生。
- 
新的选项 
 
 SKIP_LOCKED
 
 ,允许
 
 VACUUM
 
 和
 
 ANALYZE
 
 跳过那些由于锁冲突而不能立即锁定的表。
- 
新选项 
 
 INDEX_CLEANUP
 
 ,允许
 
 VACUUM
 
 跳过索引清理。将该选项设置为
 
 false
 
 可以使
 
 VACUUM
 
 尽快运行,以避免即将发生的事务ID环绕 (wraparound) 问题。
- 
可以在 
 
 VACUUM
 
 时避免不必要的heap表截断尝试。
- 
新的配置参数 
 
 vacuum_cleanup_index_scale_factor
 
 可以在
 
 VACUUM
 
 过程中尽量减少不必要的索引扫描。
- 
新的分区表存储参数 
 
 vacuum_index_cleanup
 
 ,这个参数可以帮助用户在
 
 VACUUM
 
 分区表时控制是否尝试删除指向死亡元组(dead tuples)的索引条目。
 
- 
      
       VMware Greenplum 7.0 Beta.0
      
     
      
       发布时间:
      
      
       2022年12月15日
      
     
      
       VMware Greenplum 7 包含很多新功能和改进。
      
     
      
       新的PostgreSQL功能
      
     
      
       VMware Greenplum 7 融合 PostgreSQL 9.5至12版本的若干新功能。
      
     
- 
通过 ” abbreviated “键 (Postgres 9.5) 提高 
 
 varchar, text,
 
 以及
 
 numeric
 
 的排序速度
- 
支持 
 
 array_position()
 
 和
 
 array_positions()
 
 函数(Postgres 9.5)
- 
支持 
 
 INSERT … ON CONFLICT UPDATE
 
 语句,这是一个类似UPSERT的操作,可以处理表上同时发生的数据变化之间的冲突(GPORCA、AO表仍不支持) (PostgreSQL 9.5)
- 
支持行级安全,实现了每行和每列数据访问控制(PostgreSQL 9.5)。数据库管理员可以设置安全政策,过滤特定用户允许更新或查看的行。更多内容请参考 
 
 
 关于配置行级安全策略:
 
 
 
 
 
 https://docs.vmware.com/en/VMware-Tanzu-Greenplum/7/greenplum-database/GUID-admin_guide-row_security.html
 
 
- 
 pg_resetxlog
 
 工具被重新命名为
 
 pg_resetwal
 
- 
对共享哈希表freelist进行分区,以减少在多CPU-socket服务器上的竞争(PostgreSQL 9.6) 
- 
提升原子操作时的性能,不再使用自 旋 锁保护 一 个LWLock的等待队列(PostgreSQL 9.6) 
- 
引入 
 
 ALTERDEPENDS ON EXTENSION
 
 命令,可以修改某个数据库对象依赖一个扩展(extension) 。在删除一个扩展时,依赖的数据库对象可以自动删除,无需指定CASCADE 关键字
- 
允许使用 
 
 ALTER DEFAULT PRIVILEGES
 
 命令设置和撤销schema的默认权限 (PostgreSQL 10)
- 
支持PostgreSQL的声明式表分区语法(PostgreSQL 10) 
- 
允许用一个 
 
 DROP
 
 命令删除多个函数、运算符和聚集 (PostgreSQL 10)
- 
通过 
 
 CREATE SEQUENCE AS
 
 命令创建与一个整型数匹配的 sequence
- 
支持嵌入式事务的SQL存储过程,可以通过 
 
 CREATE PROCEDURE
 
 命令创建一个存储过程,并使用CALL 命令调用 (PostgreSQL 11)
- 
在建立GiST、GIN或SP-GiST索引时减少WAL的系统开销;使得这些WAL记录所需的磁盘空间更少,而且在故障恢复或实施PITR恢复时,数据重放速度更快 (PostgreSQL 12) 
- 
支持 
 
 SQL/JSON path
 
 语言 (PostgreSQL 12)
- 
支持 
 
 STORED
 
 生成的列(其内容是由表达式计算出来,包括对同一表中其他列的引用,而非
 
 INSERT
 
 或
 
 UPDATE
 
 命令指定)。生成的列不能在Greenplum数据库中作为分布键使用。(PostgreSQL 12)
- 
支持允许一些 DDL 命令接受当前用户 ( 
 
 CURRENT_USER
 
 ) 或会话用户(
 
 SESSION_USER
 
 
 )
 
 来代替特定的用户名。(PostgreSQL 9.5)
- 
支持在 
 
 CREATE SERVER, CREATE MATERIALIZED VIEW, CREATE USER MAPPING,
 
 和
 
 CREATE COLLATION
 
 中使用
 
 IF NOT EXISTS
 
- 
增加多列优化器统计信息(multi-column optimizer statistics) ,新引入命令 
 
 CREATE STATISTICS, ALTER STATISTICS,
 
 以及
 
 DROP STATISTICS
 
 (PostgreSQL 10)
- 
支持分区表上的索引 (PostgreSQL 11) 
- 
新增命令 
 
 ALTER INDEX ATTACH PARTITION
 
 (PostgreSQL 11)
- 
支持 
 
 CREATE ACCESS METHOD
 
 命令以创建新的表类型。开发者可以实现新的表类型,以为不同的应用场景优化存储。
 
 heap
 
 仍为默认表类型(PostgreSQL 12)
- 
 CREATE/ALTER USER … PASSWORD
 
 命令不再支持
 
 UNENCRYPTED
 
 选项 (PostgreSQL 10)
- 
支持定义多列最常见值统计( multi-column most-common-value, MCV),通过 
 
 CREATE STATISTICS
 
 命令以生成更好的查询计划。目前Postgres优化器支持,GPORCA(PostgreSQL 12)尚未支持。
- 
支持通用表表达式(CTE)的自动内联。在Greenplum 7中,如果CTE没有递归,并且在查询中只被引用一次,就会自动内联。可以通过指定 
 
 MATERIALIZED
 
 来防止内联,或者通过指定
 
 NOT MATERIALIZED
 
 来强制内联多个引用的CTE。在以前的Greenplum版本中,CTE从不被内联,并且总是在查询的其他部分之前被处理。(PostgreSQL 12)
- 
支持BRIN索引 (Block Range INdexes) 。GPORCA目前使用位图索引的成本模型来支持BRIN索引,GPORCA暂不支持Postgres优化器(PostgreSQL 9.5)所支持的所有BRIN数据类型。 
- 
VMware Greenplum 7中的Postgres查询优化器(PostgreSQL 10)支持哈希索引 (GPORCA 尚未支持) 
- 
内置的全文搜索功能现在可以搜索以特定顺序出现的短语 (多个相邻的单词),或者单词之间有指定的距离(PostgreSQL 9.6) 
- 
支持外部表的 ALTER TABLE SET DISTRIBUTED BY语句。但是,必须确保外部表的内容满足DISTRIBUTED BY 的规则 
- 
窗口函数现在支持SQL:2011标准中显示的所有Frame选项,包括RANGE, DISTANCE, PRECEDING/FOLLOWING,GROUPS,以及 frame exclusion 选项的增强 
      
       新的服务器功能
      
     
- 
支持一个新的服务器配置参数 – 
 
 default_table_access_method
 
 – 当
 
 CREATE TABLE
 
 命令没有明确指定访问方法时,它决定了默认的表访问方法。
- 
 CREATE TABLE
 
 SQL命令现在支持用新的
 
 USING
 
 子句来指定表的访问方法。
- 
可以通过 
 
 ALTER TABLE
 
 命令,使用子命令
 
 SET ACCESS METHOD
 
 ,动态地更新表的访问方法。
- 
支持使用 
 
 ALTER TABLE
 
 命令动态地更新表的下列存储参数:- 
追加优化 appendoptimized 
- 
表中的块大小 blocksize 
- 
方向 orientation 
- 
压缩类别 compresstype 
- 
压缩级别 compresslevel 
- 
检查和 checksum 
 
- 
- 
使用 
 
 ALTER TABLE
 
 命令动态地更新AOCO表的列编码。
- 
支持 AO表( 
 
 append-optimized tables
 
 )
 
 
 中使用唯一索引、唯一约束和主键。
- 
可以将一个有唯一索引的堆表(heap table)转化成一个有唯一索引的AO表( append-optimized tables)。 
- 
支持一个新的服务器配置参数– 
 
 enable_partition_pruning
 
 –它可以启用或禁用查询优化器从查询计划中剪除分区表的分区。
- 
新增 
 
 gp_toolkit.__gp_aoblkdir (regclass)
 
 功能,可以用来获取一个给定的AO/AOCO表曾经或现有的一个索引的每个块目录条目 (block directory entry) 。
- 
GPORCA 查询优化器支持 
 
 CUBE
 
 grouping set。
- 
GPORCA查询优化器支持规划和运行指定的具有多个 grouping sets的查询。 
      
       改变的功能
      
     
      
       Greenplum Database 7 包括了从6.x 版本如下功能的变化:
      
     
- 
基于资源组的资源管理目前正在进行重新设计;建议等到完全实现后再使用这一功能。 
- 
为资源组保留CPU核心的 
 
 CPUSET
 
 语法已经改变,需要分别为coordinator节点和segment节点指定CPU核心。当使用
 
 CPUSET
 
 与
 
 CREATE RESOURCE GROUP
 
 或
 
 ALTER RESOURCE GROUP
 
 时,首先为 coordinator 节点配置核心,然后是 segment 节点,使用分号来分开这两者。
 
 例如,
 
 CPUSET=’1;1-3′
 
 为 coordinator节点配置Core 1,为 segment节点配置Core 1到3。
 
- 
 gpscp
 
 工具被重命名为
 
 gpsync
 
 ,新增
 
 -a
 
 选项,能够使
 
 gpsync
 
 在存档模式下同步源目录和目标目录。
- 
 autovacuum
 
 服务器配置参数现在默认为所有数据库启用,而不是只为
 
 template0
 
 和
 
 template1
 
 数据库。
- 
Greenplum 6中 
 
 g
 
 
 p_parallel_retrieve_cursor
 
 模块的并行检索游标功能现在已经内置。
- 
 pg_tables
 
 命令的输出不再包括外部表。
      
       已知的问题和限制
      
     
      
       VMware Greenplum 7.x 目前有如下限制:
      
     
- 
VMware Greenplum 7 目前处于Beta 版本,因此该软件和文档并不完整,也暂不支持用于生产部署。 
- 
不支持从以前的 Greenplum 主要版本升级到Greenplum 7 Beta。 
- 
不支持从之前的Greenplum 7 Beta 版本升级到后续的Beta 版本(例如,从Beta.0 到Beta.1)。 
- 
许多VMware Greenplum 的实用工具和扩展程序暂未包含在这个Beta版本中,包括:gppkg、Madlib、PostGIS、pgbouncer、gpcopy、高级密码检查、GreenplumPython、PL/R、PXF、Spark连接器、Apache Nifi连接器、GemFire连接器、命令中心和指标收集器、WLM、GPSS、Kafka连接器、ODBC驱动器、JDBC驱动器、GreenplumR、数据科学包、gpmt、集群恢复、gp_filedump、Greenplum升级、Greenplum云产品。 
      
       欢迎通过Release Notes 获取VMware Greenplum 7 Beta 版本的更多内容:
      
     
     本文分享自微信公众号 – Greenplum中文社区(GreenplumCommunity)。
     
     如有侵权,请联系 support@oschina.cn 删除。
     
     本文参与“
     
      OSC源创计划
     
     ”,欢迎正在阅读的你也加入,一起分享。
    
 
