PostgreSQL Global Development Group 宣布 PostgreSQL 11 的第一个 Beta 版本现已可供下载。此版本包含了 PostgreSQL 11 最终版本中所有功能的预览,尽管在最终发布前,一些细节可能会有所更改。
本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在您的数据库系统中测试 PostgreSQL 11 的新功能,以帮助我们消除可能存在的任何错误或其他问题。虽然我们不建议您在生产环境中运行 PostgreSQL 11 Beta 1,但我们鼓励您找到方法,在 Beta 版本上运行您典型的应用程序工作负载。
PostgreSQL 11 的主要功能集中在性能、处理更大数据集以及易用性方面。
PostgreSQL 11 包含多项改进分区数据处理的功能,包括:
UPDATE
语句会将受影响的行移动到相应分区SELECT
查询性能PRIMARY KEY
、FOREIGN KEY
、索引和触发器以及更多。
PostgreSQL 11 还引入了查询在最终聚合之前将分组和聚合分散到分区表的能力。此功能默认禁用,要启用它,您需要在配置文件或会话/事务期间将 enable_partitionwise_aggregate = on
设置为 on
。
PostgreSQL 11 中添加的几项功能利用了并行查询基础设施,并提供了显著的性能提升,包括:
CREATE INDEX
CREATE TABLE .. AS
、CREATE MATERIALIZED VIEW
以及带有 UNION
的某些查询PostgreSQL 11 引入了 SQL 存储过程,允许用户在过程内部使用嵌入式事务(即 BEGIN
、COMMIT
/ROLLBACK
)。过程可以使用 CREATE PROCEDURE
命令创建,并使用 CALL
命令执行。
PostgreSQL 11 引入了对 即时 (JIT) 编译 的支持,以优化运行时代码和其他操作的执行。通过使用 LLVM 项目的组件,PostgreSQL 中引入 JIT 支持可以加速利用表达式(例如 WHERE
子句)、目标列表、聚合、投影以及一些内部操作的查询。
PostgreSQL 中的 JIT 框架旨在为将来可以添加的优化工作提供支持。如果您从源代码构建 PostgreSQL 11,可以使用 --with-llvm
标志启用 JIT 编译。
截至 PostgreSQL 11,窗口函数现在支持 SQL:2011 标准中显示的所有选项,包括 RANGE _distance_ PRECEDING/FOLLOWING
、GROUPS
模式和帧排除选项。
PostgreSQL 的前一版本引入了 SCRAM 身份验证,以通过接受的标准协议改进密码的存储和传输。PostgreSQL 11 为 SCRAM 身份验证引入了通道绑定,这通过防止中间人攻击来增强使用 SCRAM 的安全性。
PostgreSQL Global Development Group 认识到,尽管 PostgreSQL 本身包含一套强大的功能,但并非所有功能都易于使用,并且在开发和生产环境中可能都需要变通方法。
在 PostgreSQL 11 之前,一项此类功能是使用 ALTER TABLE .. ADD COLUMN
命令,其中新创建的列有一个非 NULL 的 DEFAULT
值。在 PostgreSQL 11 之前,执行上述语句时,PostgreSQL 会重写整个表,这在活跃系统的大型表上可能会导致一系列问题。PostgreSQL 11 在大多数情况下消除了重写表的需求,因此运行 ALTER TABLE .. ADD COLUMN .. DEFAULT ..
将执行得非常快。
属于此类别的另一项功能是无法直观地从 PostgreSQL 命令行 (psql
) 退出。有大量用户抱怨尝试使用 quit
和 exit
命令退出,却发现退出命令是 \q
。
我们听到了您的沮丧,现在增加了使用 quit
和 exit
关键字从命令行退出的能力,并希望退出 PostgreSQL 会话现在和使用 PostgreSQL 一样令人愉快。
PostgreSQL 11 还添加了许多其他新功能和改进,其中一些功能对特定用户来说可能与上述内容相同或更重要。请参阅发行说明以获取新功能和更改功能的完整列表。
每个 PostgreSQL 版本的稳定性在很大程度上取决于您——社区——的努力,以便在您的工作负载和测试工具上测试即将发布的版本,以便在 PostgreSQL 11 发布前找到错误和回归。由于这是 Beta 版,数据库行为、功能细节和 API 仍可能发生细微更改。您的反馈和测试将有助于确定新功能的最终调整,因此请尽快进行测试。用户测试的质量有助于我们决定何时可以发布最终版本。
PostgreSQL wiki 上公开提供了一个待解决问题列表。您可以使用 PostgreSQL 网站上的此表单报告错误。
https://postgresql.ac.cn/account/submitbug/
这是 11 版本的第一个 Beta 版本。PostgreSQL 项目将在测试需要时发布额外的 Beta 版本,然后发布一个或多个候选版本,直到 2018 年底发布最终版本。有关更多信息,请参阅Beta 测试页面。