PostgreSQL 11 Beta 1 发布!

发布于 2018-05-24,作者:PostgreSQL 全球开发组
PostgreSQL 项目

PostgreSQL 全球开发组宣布 PostgreSQL 11 的第一个 beta 版本现已可供下载。此版本包含 PostgreSQL 11 最终版本中将提供的所有功能的预览,但最终版本的一些细节可能会在此之前发生变化。

本着开源 PostgreSQL 社区的精神,我们强烈建议您在数据库系统中测试 PostgreSQL 11 的新功能,以帮助我们消除可能存在的任何错误或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 11 Beta 1,但我们鼓励您找到方法针对此 beta 版本运行您的典型应用程序工作负载。

PostgreSQL 11 的主要功能

PostgreSQL 11 的主要功能侧重于性能、处理更大的数据集以及易用性。

分区的主要改进

PostgreSQL 11 包含多项改进分区数据处理的功能,包括:

  • 按哈希键进行分区的能力(“哈希分区”)
  • 对分区键发出的 UPDATE 语句现在将受影响的行移动到适当的分区
  • 由于在查询处理和执行期间增强了分区消除以及并行分区扫描,因此提高了 SELECT 查询性能
  • 支持分区上的 PRIMARY KEYFOREIGN KEY、索引和触发器

等等。

PostgreSQL 11 还引入了在最终聚合之前将分组和聚合分发到分区表的能力。默认情况下禁用此功能,要启用,您需要在配置文件或会话或事务期间将 enable_partitionwise_aggregate = on

并行性改进

PostgreSQL 11 中添加的多个功能利用了并行查询基础设施并提供了显著的性能增强,包括:

  • 并行哈希连接
  • 为 B 树索引并行化 CREATE INDEX
  • 并行化 CREATE TABLE .. ASCREATE MATERIALIZED VIEW 以及某些带有 UNION 的查询

SQL 存储过程

PostgreSQL 11 引入了 SQL 存储过程,允许用户在过程内使用嵌入式事务(即 BEGINCOMMIT/ROLLBACK)。可以使用 CREATE PROCEDURE 命令创建过程,并使用 CALL 命令执行。

引入即时 (JIT) 编译

PostgreSQL 11 引入了对 即时 (JIT) 编译的支持,以优化运行时代码和其他操作的执行。使用 LLVM 项目的组件,在 PostgreSQL 中引入 JIT 支持可加速使用表达式(例如 WHERE 子句)、目标列表、聚合、投影以及一些内部操作的查询。

PostgreSQL 中的 JIT 框架旨在允许将来为可以添加到未来的优化工作。如果您从源代码构建 PostgreSQL 11,则可以使用 --with-llvm 标志启用 JIT 编译。

窗口函数完全支持 SQL:2011 标准

从 PostgreSQL 11 开始,窗口函数 现在支持 SQL:2011 标准中显示的所有选项,包括 RANGE _distance_ PRECEDING/FOLLOWINGGROUPS 模式和帧排除选项。

SCRAM 身份验证的通道绑定

PostgreSQL 的先前版本引入了 SCRAM 身份验证,以使用公认的标准协议改进密码的存储和传输。PostgreSQL 11 引入了 SCRAM 身份验证的通道绑定,通过防止中间人攻击来增强使用 SCRAM 的安全性。

用户体验增强

PostgreSQL 全球开发组认识到,虽然 PostgreSQL 本身包含一组强大的功能,但并非所有功能都易于使用,并且可能需要在开发和生产环境中进行解决方法。

在 PostgreSQL 11 之前,其中一个功能是使用 ALTER TABLE .. ADD COLUMN 命令,其中新创建的列具有不是 NULL 的 DEFAULT 值。在 PostgreSQL 11 之前,执行上述语句时,PostgreSQL 会重写整个表,这在活动系统中的大型表上可能会导致一系列问题。PostgreSQL 11 消除了在大多数情况下重写表的需要,因此运行 ALTER TABLE .. ADD COLUMN .. DEFAULT .. 将非常快速地执行。

属于此类别的另一个功能是无法从 PostgreSQL 命令行 (psql) 直观地退出。已经有很多用户尝试使用 quitexit 命令退出,但最终了解到执行此操作的命令是 \q

我们已经听到了您的挫败感,现在添加了使用关键字 quitexit 退出命令行的功能,并希望退出 PostgreSQL 会话现在与使用 PostgreSQL 一样愉快。

其他功能

PostgreSQL 11 中添加了许多其他新功能和改进,其中一些对于特定用户而言可能与上面提到的功能一样重要或更重要。请参阅 发行说明,以获取新的和更改的功能的完整列表。

测试错误和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您(社区)使用您的工作负载和测试工具测试即将推出的版本,以便在 PostgreSQL 11 发布之前找到错误和回归。由于这是一个 Beta 版本,因此数据库行为、功能细节和 API 的细微更改仍然是可能的。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。

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

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

Beta 计划

这是版本 11 的第一个 beta 版本。PostgreSQL 项目将根据测试需要发布其他 beta 版本,然后发布一个或多个候选版本,直到 2018 年末发布最终版本。有关更多信息,请参阅Beta 测试页面。

链接