PostgreSQL 全球开发小组宣布,PostgreSQL 13 的第一个 beta 版本现在可供下载。此版本包含 PostgreSQL 13 最终版本中将提供的所有功能的预览,尽管发布的一些细节可能会在此之前发生更改。
您可以在发行说明中找到有关 PostgreSQL 13 中所有功能和更改的信息
https://postgres.ac.cn/docs/13/release-13.html
本着开源 PostgreSQL 社区的精神,我们强烈建议您在您的系统中测试 PostgreSQL 13 的新功能,以帮助我们消除可能存在的任何错误或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 13 Beta 1,但我们鼓励您找到方法针对此 beta 版本运行您典型的应用程序工作负载。
您的测试和反馈将帮助社区确保 PostgreSQL 13 版本秉承我们的标准,提供世界上最先进的开源关系数据库的稳定、可靠版本。您可以阅读更多关于我们的beta 测试流程以及您如何在此处做出贡献的信息
https://postgres.ac.cn/developer/beta/
PostgreSQL 13 中有许多新功能有助于提高 PostgreSQL 的整体性能,同时使其更容易开发应用程序。
B 树索引是 PostgreSQL 的标准索引,在处理重复数据方面得到了改进。这些增强功能有助于缩小索引大小并提高查找速度,特别是对于包含重复值的索引。
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
)访问此功能,该选项允许您指定用于清理索引的并行工作进程数量。请注意,这不适用于 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://postgres.ac.cn 的链接。
PostgreSQL 13 添加了许多其他新功能和改进,其中一些对您的用例可能与上述功能同样重要或更重要。有关新的和更改的功能的完整列表,请参阅发行说明
https://postgres.ac.cn/docs/13/release-13.html
每个 PostgreSQL 版本的稳定性很大程度上取决于您,社区,使用您的工作负载和测试工具测试即将推出的版本,以便在 PostgreSQL 13 正式发布之前发现错误和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 仍可能发生细微变化。您的反馈和测试将有助于确定新功能的最终调整,因此请在近期进行测试。用户测试的质量有助于确定我们何时可以进行最终发布。
未解决问题的列表在 PostgreSQL Wiki 中公开提供。您可以使用 PostgreSQL 网站上的此表单报告错误
https://postgres.ac.cn/account/submitbug/
这是 13 版本的第一个 beta 版本。PostgreSQL 项目将根据测试需要发布其他 beta 版本,然后发布一个或多个候选版本,直到 2020 年底最终发布。有关更多信息,请参阅Beta 测试页面。