虽然 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
分区表的表空间规范影响其子表空间
此外还有索引、认证、监控和功能优化等诸多变化。由于内容十分多,建议直接查看原文。
转自 https://www.oschina.net/news/106661/first-draft-of-postgresql-12-release-notes