2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 13 Beta 1 发布!

发布日期:2020-05-21 作者:PostgreSQL 全球开发组
PostgreSQL 项目

PostgreSQL 全球开发组宣布,PostgreSQL 13 的第一个 Beta 版本现已可供下载。此版本包含 PostgreSQL 13 最终版本中所有功能的预览,尽管在最终发布之前,某些细节可能会有所更改。

您可以在发布说明中找到 PostgreSQL 13 中所有新功能和更改的信息。

https://postgresql.ac.cn/docs/13/release-13.html

本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在您的系统中测试 PostgreSQL 13 的新功能,以帮助我们消除可能存在的任何 bug 或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 13 Beta 1,但我们鼓励您尝试在 Beta 版本上运行您的典型应用程序工作负载。

您的测试和反馈将有助于社区确保 PostgreSQL 13 版本能够保持我们提供稳定、可靠的世界领先开源关系型数据库的标准。您可以阅读更多关于我们的Beta 测试流程以及如何在此贡献的信息。

https://postgresql.ac.cn/developer/beta/

PostgreSQL 13 功能亮点

功能

PostgreSQL 13 引入了许多新功能,这些功能有助于提高 PostgreSQL 的整体性能,同时让应用程序的开发更加轻松。

PostgreSQL 标准索引 B-tree 索引在处理重复数据方面得到了改进。这些增强功能有助于减小索引大小并提高查找速度,尤其是在包含重复值的索引上。

PostgreSQL 13 增加了增量排序功能,当查询中较早部分的数据已经排序时,可以加速数据排序。此外,带有 OR 子句或 IN/ANY 常量列表的查询可以使用扩展统计信息(通过 CREATE STATISTICS 创建),这可以带来更好的计划和性能提升。PostgreSQL 13 现在可以使用磁盘存储来处理大型聚合集(用于聚合查询)。

此版本对 PostgreSQL 的分区功能进行了更多改进,包括增加了分区表之间直接连接的场景,这可以提高整体查询执行时间。分区表现在支持 BEFORE 行级触发器,并且可以通过逻辑复制完全复制分区表,而无需发布单个分区。

PostgreSQL 13 引入了 FETCH FIRST WITH TIES 等功能,进一步简化了查询编写。它会返回与最后一行匹配的所有其他行。此外,jsonpath 查询新增了 .datetime() 函数,该函数会自动将日期或时间类型的字符串转换为相应的 PostgreSQL 日期/时间数据类型。现在生成随机 UUID 也更加容易,因为 gen_random_uuid() 函数无需启用任何扩展即可使用。

管理

PostgreSQL 13 最受期待的功能之一是 VACUUM 命令能够并行处理索引。此功能可以通过 VACUUM 命令的新 PARALLEL 选项(或 vacuumdb 上的 --parallel)进行访问,该选项允许您指定用于 vacuuming 索引的并行工作进程数量。请注意,此功能不适用于 FULL 选项。

reindexdb 命令也通过新的 --jobs 标志增加了并行性,该标志允许您在重新索引数据库时指定并发会话的数量。

PostgreSQL 13 引入了“受信任扩展”的概念,它允许超级用户指定用户可以安装在其数据库中的扩展,只要他们具有 CREATE 权限。

此版本包含了更多监控 PostgreSQL 数据库内活动的方式:PostgreSQL 13 现在可以跟踪 WAL 使用情况统计信息、流基础备份的进度以及 ANALYZE 命令的进度。pg_basebackup 还可以生成一个清单,使用名为 pg_verifybackup 的新工具来验证备份的完整性。现在还可以限制复制槽保留的 WAL 空间量。

pg_dump 的一个新标志 --include-foreign-data,可以在转储输出中包含由外部数据包装器引用的服务器的数据。

pg_rewind 命令在 PostgreSQL 13 中也有所改进。除了 pg_rewind 自动执行崩溃恢复外,您现在还可以使用 --write-recovery-conf 标志来配置备用 PostgreSQL 实例。pg_rewind 还可以使用目标实例的 restore_command 来获取所需的预写日志。

安全

PostgreSQL 在此最新版本中继续改进其安全功能,引入了多项功能以进一步安全地部署 PostgreSQL。

libpq,即驱动 psql 和许多 PostgreSQL 连接驱动程序的连接库,包含几个新参数以帮助保护连接。PostgreSQL 13 引入了 channel_binding 连接参数,允许客户端指定他们希望将通道绑定功能作为 SCRAM 的一部分。此外,使用密码保护的 TLS 证书的客户端现在可以使用 sslpassword 参数指定其密码。PostgreSQL 13 还增加了对 DER 编码证书的支持。

PostgreSQL 外部数据包装器(postgres_fdw)在如何保护连接方面也得到了一些增强,包括使用基于证书的身份验证连接到其他 PostgreSQL 集群的能力。此外,非特权账户现在无需密码即可通过 postgres_fdw 连接到另一个 PostgreSQL 数据库。

其他亮点

PostgreSQL 13 继续改进 Windows 上的可操作性,因为现在在 Windows 上运行 PostgreSQL 的用户可以选择通过 UNIX 域套接字进行连接。

PostgreSQL 13 文档新增了一个术语术语表,以帮助人们熟悉 PostgreSQL 和通用数据库概念。这与函数和运算符在表中的显示进行了重大重写相吻合,有助于提高 Web 和 PDF 文档的可读性。

用于性能测试的 pgbench 工具现在支持对“账户”表进行分区,从而更容易对包含分区的应用程序进行基准测试。

psql 现在包含 \warn 命令,该命令在输出数据方面与 \echo 命令类似,但 \warn 将其发送到 stderr。如果您需要有关任何 PostgreSQL 命令的额外指导,--help 标志现在包含指向 https://postgresql.ac.cn 的链接。

附加功能

PostgreSQL 13 增加了许多其他新功能和改进,其中一些功能可能与您用例的重要性相同或更高。请参阅发布说明以获取新功能和更改功能的完整列表。

https://postgresql.ac.cn/docs/13/release-13.html

测试 Bug 和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您——社区——通过您的工作负载和测试工具来测试即将发布的版本,以便在 PostgreSQL 13 正式发布之前发现 bug 和回归。由于这是 Beta 版本,数据库行为、功能细节和 API 仍可能发生微小变化。您的反馈和测试将有助于确定新功能的最终调整,因此请尽快进行测试。用户测试的质量有助于决定我们何时可以进行最终发布。

PostgreSQL wiki 上公开提供了 未解决问题 的列表。您可以使用 PostgreSQL 网站上的此表单 报告错误

https://postgresql.ac.cn/account/submitbug/

Beta 时间表

这是 13 版本的第一个 Beta 版本。PostgreSQL 项目将在测试需要时发布其他 Beta 版本,随后发布一个或多个候选版本,直到 2020 年底最终发布。有关更多信息,请参阅Beta 测试页面。

链接