gpbakcup和gprestore不再集成在Greenplum 6内部,而是成为一个独立发布更新的工具
Greenplum 6里使用了一种叫Jump Hash的算法来计算数据的哈希分布。这个算法可以做到在增加新节点重新分布数据时,只需移动哈希到新节点的数据。哈希性能上与之前发布的版本相差不多,但是能做到快速扩容。因为新哈希算法更消耗CPU,所以COPY工具在CPU资源紧张的机器上运行性能会下降
旧的哈希方法已经不是默认的哈希方法,只有在从Greenplum 6.0之前的老版本升级的时候才会使用。如果全部使用旧的或者新的哈希算法的表分布规则是相同的,如果混合使用了新旧两种哈希算法的表,做查询时就会需要做Redistribute Motions。系统参数gp_use_legacy_hashops可以控制建立列分布表时使用传统的哈希算法还是新的哈希算法。系统表gp_distribution_policy包含了Greenplum表和跨节点分布策略的更多信息,增加了表示分布哈希函数中操作符类的列
对于使用IS NULL的语句,可以像通过分布列过滤到指定节点的语句一样,做直接分发
在系统表pg_proc中, proiswin列被重新命名成proiswindow并调整了在表中的位置以做到与PostgreSQL8.4一致
对于使用了SELECT DISTINCT和UNION/INTERSECT/EXCEPT的语句,不再保证结果是排序后的。之前这些语句通过排序来移除重复的数据。如今参考了PostgreSQL8.4的特性,通过哈希来实现。这种方法保证不了结果是排序过的。如果在使用这类语句时想要得到排序后的结果,请使用显式的ORDER BY。值得注意的是SELECT DISTINCT ON没有使用哈希,和过去的行为一样。
系统表pg_database中的datconfig列被移除,转而使用系统表pg_db_role_setting来记录每个数据库和每个角色的配置(PostgreSQL9.0引入)
系统表pg_authid中的rolconfig列被移除,转而使用系统表pg_db_role_setting来记录每个数据库和每个角色的配置(PostgreSQL9.0引入)
在创建或修改含有分布列的表时,可以指定哈希分布算法
删除了ALTER OPERATOR FAMILY和CREATE OPERATOR CLASS DDL (PostgreSQL 8.4引入)的RECHECK选项。目前在运行阶段自动判断一个索引操作符是否有损,需要时自动再次检查数据是否满足条件.
Operator相关的系统表被修改,以便支持操作符的不同类别,相容性和类型
Greenplum 6.0的事务隔离级别,在合并PostgreSQL9.1引入可串行化的快照隔离级别(SSI)后,与PostgreSQL保持了一致。这个新隔离级别SSI,通过监控正在运行的事务和回滚可能产生串行化异常的事务,来提供真正的可串行化。现有的快照隔离级别(SI)只能保证事务运行在一个单独一致的快照上,不保证按不同顺序并发执行多个事务时结果的一致性。Greenplum 6.0可以在类似BEGIN和SET TRANSACTION的语句里增加REPEATABLE READ关键字。一个可串行化的事务在PostgreSQL 9.1或更新的版本里使用新的SSI模式。在Greenplum 6.0里一个可串行化隔离级别的事务将退化成可重复读隔离级别,使用SI模式。下表显示了SQL标准的隔离级别在Greenplum 6.0和PostgreSQL9.1里的兼容性。
ALTER SEQUENCE语句增加了子句START [WITH] {start}和OWNER TO {new_owner}(PostgreSQL 8.4引入)。START子句可以设置用在ALTER SEQUENCE RESTART命令里的开始值,但是不会改变当前序列的值。OWNER TO子句可以改变序列的owner
ALTER TABLE语句增加了SET WITH OIDS子句可以为表增加一个oid系统列(PostgreSQL 8.4引入),但是这种方法不推荐使用
CREATE DATABASE语句增加了新参数LC_COLLATE和LC_CTYPE,用来指定新数据库的collate和字符集的排序
CREATE FUNCTION语句增加了新关键词WINDOW,用来表明该函数是窗口,而不是普通的函数(PostgreSQL 8.4引入)
CREATE INDEX语句中的index名字变为可选。Greenplum 会根据表名和索引列生成默认的索引名称
Create protocol需要超级用户权限,详情请看 CREATE PROTOCOL说明.
CREATE TYPE语句增加了子句LIKE=type,可以从一个已经存在的类型中复制新类型的描述,包括INTERNALLENGTH, PASSEDBYVALUE, ALIGNMENT和STORAGE(PostgreSQL 8.4引入)
GRANT语句增加了新语法,可以授权truncate,外部数据包装和服务(FDW)(PostgreSQL 8.4引入)
LOCK语句增加了ONLY关键字,可以只锁该表而不锁继承该表的子表
在事务外部使用LOCK表语句时会报错,在之前的版本中,该语句可以在事务外部成功执行,虽然只有在事务内部运行时才会真正有效
SELECT和VALUES语句支持SQL 2008标准的OFFSET和FETCH语法(PostgreSQL 8.4引入)。这个语法提供了一种新的可以限制结果集的方法
SELECT语句中可以没有FROM子句,但是Greenplum不允许没有FROM子句的SELECT语句引用数据库表。
TRUNCATE语句增加了ONLY关键字(PostgreSQL 8.4引入),可以只truncate该表而不影响继承于它的子表
createdb工具增加了新的参数,-l (–locale), –lc-collate和–lc-ctype,可以为数据库指定locale和字符集(PostgreSQL 8.4引入)
pg_dump, pg_dumpall和pg_restore工具增加了新的参数–role,可以在连接数据库后设置ROLE,再执行dump或restore操作(PostgreSQL 8.4引入)
pg_dump和pg_dumpall工具增加了新参数–lock-wait-timeout(PostgreSQL 8.4引入)。可以设置拿不到读锁的等待时间,超时后失败,而不是一直等下去。单位是毫秒
pg_dump和pg_dumpall删除了-d和-D参数,相对应的长参数–inserts和–column-inserts仍然保留。增加了新参数–binary-upgrade,该参数被原地升级工具使用
pg_dump, pg_dumpall和pg_restore增加了-w参数,免输入密码
gpexpand删除了-D参数,扩容相关的表将被创建到postgres数据库里,不需要单独指定
gpstate增加了新参数-x,可以展示扩容过程的详细状态。在扩容中,-s或不加任何参数也会提示扩容在进行,但不会显示详细信息
pg_restore增加了新参数-j (–number-of-jobs),这个参数通过设置并行作业的数量来减少恢复大数据库的时间
vacuumdb工具新增-F (–freeze) 选项来冻结数据行的事务信息.
ALTER DATABASE增加了SET TABLESPACE子句,来设置默认的表空间
CREATE DATABASE增加了COLLATE和CTYPE选项来设置数据库的collation排序和字符集
系统参数gp_workfile_compress_algorithm改名为gp_workfile_compression.当被启用时,使用Zstandard压缩算法
Oracle Compatibility Functions已作为一个基于PostgreSQL orafce项目(https://github.com/orafce/orafce)的扩展,可以在Greenplum里使用。用户可以通过CREATE EXTENSION orafce而不是运行脚本来创建。该扩展基于orafce3.7。
支持citext数据类型的列作为分布键
提供了一个统一的安装包,可以下载和安装客户端和加载工具。之前它们是分别提供的不同包
来自http://www.huayisoftware.com/view-20c40bec3bef411ab1da8c0769956085-85cd105dbcac4918bf3010ccfdf069f2.html