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

PostgreSQL 11 发布!

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

PostgreSQL 全球开发组今日宣布发布 PostgreSQL 11,这是世界上最先进的开源数据库的最新版本。

PostgreSQL 11 为用户带来了数据库系统整体性能的提升,特别是在处理超大型数据库和高计算负载方面进行了增强。此外,PostgreSQL 11 还对表分区系统进行了重大改进,增加了对支持事务管理的存储过程的支持,提高了查询并行性并增加了并行化的数据定义能力,并引入了即时编译 (JIT) 以加速查询中表达式的执行。

PostgreSQL 全球开发组的核心团队成员 Bruce Momjian 表示:“对于 PostgreSQL 11,我们的开发社区专注于添加能提升 PostgreSQL 处理超大型数据库能力的功能。在 PostgreSQL 经久考验的事务处理性能之上,PostgreSQL 11 让开发者能够更轻松地大规模运行大数据应用。”

PostgreSQL 受益于超过 20 年的开源开发,已成为开发者首选的开源关系型数据库。该项目持续获得行业认可,被 DB-Engines 评为“2017 年度数据库管理系统”,并在 SD Times 2018 100 评选中获奖。

PostgreSQL 11 是自 2017 年 10 月 5 日发布 PostgreSQL 10 以来第一个主要版本。下一个包含错误修复的 PostgreSQL 11 更新版本将是 PostgreSQL 11.1,而下一个包含新功能的主要版本将是 PostgreSQL 12。

分区健壮性和性能增强

PostgreSQL 11 增加了按哈希键分区数据的能力,也称为哈希分区,这补充了 PostgreSQL 中按值列表或范围分区的现有能力。PostgreSQL 11 通过改进使用 PostgreSQL 外连接封装器 postgres_fdw 的分区的相关功能,进一步增强了其数据联合能力。

为了便于管理分区,PostgreSQL 11 引入了一个用于匹配不到分区键的数据的默认捕获分区,以及在分区表上创建主键、外键、索引和触发器的能力,这些将传递到所有分区。PostgreSQL 11 还支持在更新分区键时自动将行移动到正确的分区。

PostgreSQL 11 通过使用新的分区消除策略改进了从分区读取时的查询性能。此外,PostgreSQL 11 现在支持分区表上的流行“upsert”功能,这有助于用户简化应用程序代码并在与数据交互时减少网络开销。

存储过程支持事务

二十多年来,PostgreSQL 一直允许开发者创建用户自定义函数,但在 PostgreSQL 11 之前,这些函数无法管理自己的事务。PostgreSQL 11 增加了 SQL 过程,可以在函数体内部执行完整的事务管理,使开发者能够创建更高级的服务器端应用程序,例如涉及增量批量数据加载的应用程序。

可以使用 CREATE PROCEDURE 命令创建 SQL 过程,使用 CALL 命令执行,并得到服务器端过程语言 PL/pgSQL、PL/Perl、PL/Python 和 PL/Tcl 的支持。

查询并行化能力增强

PostgreSQL 11 提高了并行查询性能,在并行顺序扫描和哈希连接方面取得了性能提升,并提高了对分区数据的扫描效率。PostgreSQL 现在可以并行执行使用 UNION 的 SELECT 查询,前提是底层查询无法并行化。

PostgreSQL 11 为多个数据定义命令增加了并行化,特别是对于通过执行标准 CREATE INDEX 命令生成的 B-tree 索引的创建。一些从查询创建表或物化视图的数据定义命令现在也支持并行化,包括 CREATE TABLE .. ASSELECT INTOCREATE MATERIALIZED VIEW

表达式的即时 (JIT) 编译

PostgreSQL 11 引入了对即时 (JIT) 编译的支持,以加速查询执行期间某些表达式的执行。PostgreSQL 的 JIT 表达式编译使用 LLVM 项目来加速 WHERE 子句、目标列表、聚合、投影以及某些内部操作中表达式的执行。

要利用 JIT 编译,您需要安装 LLVM 依赖项,并在 PostgreSQL 设置文件中通过将 jit = on 设置来启用 JIT 编译,或者通过执行 SET jit = on 从 PostgreSQL 会话中启用。

一般用户体验改进

PostgreSQL 关系型数据库的增强离不开活跃用户社区的反馈以及 PostgreSQL 工作人员的辛勤付出。以下亮点是 PostgreSQL 11 中为改善整体用户体验而设计的众多功能中的一小部分。

  • 消除了 ALTER TABLE .. ADD COLUMN .. DEFAULT .. 和非 NULL 默认值时需要重写整个表的需要,这在执行此命令时提供了显著的性能提升。
  • “覆盖索引”,允许用户使用 INCLUDE 子句向索引添加附加列,这有助于执行仅索引扫描,特别是在 B-tree 索引无法索引的数据类型上。
  • 对窗口函数增加了附加功能,包括允许 RANGE 使用 PRECEDING/FOLLOWINGGROUPS 和帧排除。
  • 在 PostgreSQL 命令行界面中包含“quit”和“exit”关键字,以方便退出命令行工具。

有关此版本中包含的功能的完整列表,请阅读 发布说明,可在以下网址找到:

https://postgresql.ac.cn/docs/11/static/release-11.html

关于 PostgreSQL

PostgreSQL 是世界上最先进的开源数据库,拥有数千名用户、贡献者、公司和组织的全球社区。PostgreSQL 项目基于加州大学伯克利分校启动的 30 多年的工程积累,并保持着无与伦比的发展速度。PostgreSQL 成熟的功能集不仅能与顶级的专有数据库系统相媲美,在高级数据库功能、可扩展性、安全性和稳定性方面甚至超越了它们。访问 PostgreSQL.org 了解更多关于 PostgreSQL 的信息并参与我们的社区。