PostgreSQL 全球开发组今天宣布发布 PostgreSQL 11,这是世界上最先进的开源数据库的最新版本。
PostgreSQL 11 为用户提供了数据库系统整体性能的改进,特别针对超大型数据库和高计算工作负载进行了增强。此外,PostgreSQL 11 对表分区系统进行了重大改进,增加了对能够进行事务管理的存储过程的支持,改进了查询并行性,并增加了并行数据定义功能,并引入了即时 (JIT) 编译,以加速查询中表达式的执行。
PostgreSQL 全球开发组的 核心团队成员 Bruce Momjian 表示:“对于 PostgreSQL 11,我们的开发社区专注于添加能够提高 PostgreSQL 管理超大型数据库能力的功能。在 PostgreSQL 经过验证的事务工作负载性能之上,PostgreSQL 11 使开发人员更容易大规模运行大数据应用程序。”
PostgreSQL 受益于 20 多年的开源开发,已成为开发人员首选的开源关系数据库。该项目继续获得整个行业的认可,并被 DB-Engines 评为 “2017 年度 DBMS”,并在 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 中创建用户定义的函数超过 20 年了,但在 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 树索引的创建。从查询创建表或物化视图的几个数据定义命令现在也具有并行能力,包括 CREATE TABLE .. AS
、SELECT INTO
和 CREATE MATERIALIZED VIEW
。
PostgreSQL 11 引入了对即时 (JIT) 编译的支持,以加速查询执行期间某些表达式的执行。PostgreSQL 的 JIT 表达式编译使用 LLVM 项目来加快 WHERE 子句、目标列表、聚合、投影和一些内部操作中表达式的执行。
要利用 JIT 编译,您需要在 PostgreSQL 设置文件中安装 LLVM 依赖项并通过设置 jit = on
来启用 JIT 编译,或者通过执行 SET jit = on
从 PostgreSQL 会话启用。
如果没有活跃用户社区的反馈和 PostgreSQL 工作人员的辛勤工作,PostgreSQL 关系数据库的增强是不可能实现的。以下重点介绍 PostgreSQL 11 中包含的旨在改善整体用户体验的众多功能中的一些:
ALTER TABLE .. ADD COLUMN .. DEFAULT ..
以及 NULL
默认值来重写执行时的整个表,这在运行此命令时提供了显着的性能提升。INCLUDE
子句向索引添加额外的列,这对于执行仅索引扫描非常有用,尤其是在 B 树索引无法索引的数据类型上。RANGE
使用 PRECEDING
/FOLLOWING
、GROUPS
和帧排除有关此版本中包含的功能的完整列表,请阅读 发行说明,可以在以下位置找到:
https://postgresql.ac.cn/docs/11/static/release-11.html
PostgreSQL 是世界上最先进的开源数据库,拥有由成千上万的用户、贡献者、公司和组织组成的全球社区。PostgreSQL 项目建立在加州大学伯克利分校 30 多年的工程基础上,并以无与伦比的发展速度继续发展。PostgreSQL 成熟的功能集不仅与顶级的专有数据库系统相匹配,而且在高级数据库功能、可扩展性、安全性和稳定性方面都超越了它们。在 PostgreSQL.org 了解更多关于 PostgreSQL 的信息并参与我们的社区。