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源创计划
”,欢迎正在阅读的你也加入,一起分享。