虽然 PostgreSQL 12 尚未发布,不过开发团队已公布其首个版本说明草案。据官方介绍,这是一个十分重要的版本,下面看看有哪些值得关注的变化。
对于从任意旧版本迁移到 PostgreSQL 12 的用户,需要使用 pg_dumpall 或 pg_upgrade 进行 dump/restore(备份和恢复) 操作。
PostgreSQL 12 还包含许多可能影响与旧版本之间的兼容性的变更:
-
删除系统列 OID 的某些特殊行为
旧版本中,在创建表时可以通过
WITH OIDS
指定正常情况下不可见(normally-invisible)的 OID 列;在新版本中该特性已被删除,不过列仍可以被显式地指定为OID
类型。 -
删除数据类型
abstime
,reltime
和tinterval
-
删除时间段扩展(timetravel extension)
-
将
recovery.conf
设置移动至postgresql.conf
recovery.conf
将不再被使用,如果该文件仍存在,服务器将无法启动。 -
不再允许多种不同的
recovery_target
* 规范旧版本中,可指定多个不同的
recovery_target
*变量,现在只能指定一个。 -
导致需要恢复的情况将默认使用最新状态
具体来说,recovery_target_time现在的默认值为
latest
,而旧版本的默认值为current
-
重构几何函数和运算符
会使得结果更准确,但和旧版本相比略有不同
-
重构几何类型以更加一致地处理 NaN、下溢、上溢和除零情况
-
改进社区报告的针对行数据类型的行为和错误
分区方面也有不少的改进:
-
提高分区表上许多操作的性能
现在可以有效地对数以千计的分区进行修剪
-
允许外键引用分区表
-
提高
COPY
分区表的速度 -
允许将分区边界设置为任意表达式
-
允许
CREATE TABLE
分区表的表空间规范影响其子表空间
此外还有索引、认证、监控和功能优化等诸多变化。由于内容十分多,建议直接查看原文。