PostgreSQL 12 发布!

发布于 2019-10-03,由 PostgreSQL 全球开发组发布
社区 PostgreSQL 项目

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

PostgreSQL 12 的增强功能包括查询性能的显著改进,特别是在较大的数据集上,以及整体空间利用率的提高。此版本为应用程序开发人员提供了新功能,例如 SQL/JSON 路径表达式支持,对如何执行公共表表达式(WITH)查询的优化以及生成的列。 PostgreSQL 社区继续支持 PostgreSQL 的可扩展性和健壮性,进一步增加了国际化、身份验证功能,并提供了更轻松的管理 PostgreSQL 的方式。 此版本还引入了可插拔的表存储接口,允许开发人员创建自己的数据存储方法。

“PostgreSQL 背后的开发社区为 PostgreSQL 12 贡献了许多功能,这些功能提供了我们的用户可以用最少的工作量实现的性能和空间管理提升,以及企业身份验证、管理功能和 SQL/JSON 支持方面的改进。”PostgreSQL 全球开发组的 核心团队成员 Dave Page 说。“此版本延续了使管理大小型数据库工作负载更容易的趋势,同时建立在 PostgreSQL 在生产环境中灵活性、可靠性和稳定性的声誉之上。”

PostgreSQL 受益于超过 20 年的开源开发,已成为各种规模的组织首选的开源关系数据库。该项目继续在整个行业中获得认可,包括连续第二年被 DB-Engines 评为 2018 年的“年度 DBMS”,并在 OSCON 2019 上获得 “终身成就”开源奖

整体性能改进

PostgreSQL 12 为其索引系统和分区提供了重要的性能和维护增强功能。

B 树索引是 PostgreSQL 中标准的索引类型,在 PostgreSQL 12 中进行了优化,可以更好地处理频繁修改索引的工作负载。 使用 TPC-C 基准测试的公平使用实现,PostgreSQL 12 平均减少了 40% 的空间利用率,并且整体查询性能有所提高。

分区表上的查询也得到了显著的改进,特别是对于只需要从有限子集中检索数据且具有数千个分区的表。PostgreSQL 12 还提高了使用 INSERTCOPY 向分区表添加数据的性能,并且包括了在不阻塞查询的情况下将新分区附加到表的能力。

PostgreSQL 12 中对索引的额外增强功能会影响整体性能,包括 GiST、GIN 和 SP-GiST 索引类型的预写日志生成中的较低开销、在 GiST 索引上创建覆盖索引(INCLUDE 子句)的能力、使用 SP-GiST 索引通过距离运算符(<->)执行 K 最近邻查询的能力,以及 CREATE STATISTICS 现在支持最常见值 (MCV) 统计信息,以帮助在使用非均匀分布的列时生成更好的查询计划。

默认情况下,现在启用了 PostgreSQL 11 中引入的,使用 LLVM 的 即时 (JIT) 编译。JIT 编译可以为 WHERE 子句、目标列表、聚合和某些内部操作中表达式的执行提供性能优势,并且如果您的 PostgreSQL 安装是通过 LLVM 编译或打包的,则可以使用。

SQL 一致性和功能增强

PostgreSQL 以其对 SQL 标准的一致性而闻名,这也是它从 “POSTGRES” 更名为 “PostgreSQL” 的原因之一,并且 PostgreSQL 12 添加了多个功能,以继续通过增强的功能实现 SQL 标准。

PostgreSQL 12 引入了使用 SQL/JSON 标准中定义的 JSON 路径表达式对 JSON 文档运行查询的能力。此类查询可以利用 JSONB 格式存储的文档的现有索引机制来有效地检索数据。

公共表表达式(也称为 WITH 查询)现在可以被 PostgreSQL 12 自动内联,这反过来可以帮助提高许多现有查询的性能。在此版本中,如果 WITH 查询不是递归的,没有任何副作用,并且仅在查询的后面部分中被引用一次,则可以对其进行内联。

PostgreSQL 12 引入了“生成的列”。这种类型的列在 SQL 标准中定义,从同一表中其他列的内容计算其值。在此版本中,PostgreSQL 支持“存储生成的列”,其中计算值存储在磁盘上。

国际化

PostgreSQL 12 通过允许用户定义可以例如允许不区分大小写或不区分重音符号的比较的“非确定性排序规则”来扩展其对 ICU 排序规则的支持。

身份验证

PostgreSQL 通过多项增强功能扩展了其强大的身份验证方法支持,这些增强功能提供了额外的安全性和功能。此版本为通过 GSSAPI 接口的身份验证引入了客户端和服务器端加密,以及如果 PostgreSQL 是使用 OpenLDAP 编译的,则 PostgreSQL 发现 LDAP 服务器的能力。

此外,PostgreSQL 12 现在支持一种多因素身份验证形式。 PostgreSQL 服务器现在可以要求进行身份验证的客户端使用 clientcert=verify-full 选项提供带有其用户名的有效 SSL 证书,并将此与单独的身份验证方法(例如 scram-sha-256)的要求相结合。

管理

PostgreSQL 12 引入了通过 REINDEX CONCURRENTLY 命令重建索引而不会阻止对索引进行写入的能力,从而允许用户避免长时间索引重建造成的停机情况。

此外,PostgreSQL 12 现在可以使用 pg_checksums 命令在离线集群中启用或禁用页面校验和。以前,页面校验和(一种帮助验证存储到磁盘的数据的完整性的功能)只能在通过 initdb 初始化 PostgreSQL 集群时启用。

有关此版本中包含的功能的完整列表,请阅读发行说明,可在以下位置找到:https://postgres.ac.cn/docs/12/release-12.html

关于 PostgreSQL

PostgreSQL 是世界上最先进的开源数据库,拥有由数千名用户、贡献者、公司和组织组成的全球社区。PostgreSQL 项目基于加州大学伯克利分校开始的 30 多年的工程经验,并以无与伦比的发展速度继续发展。 PostgreSQL 成熟的功能集不仅与顶级专有数据库系统相匹配,而且在高级数据库功能、可扩展性、安全性和稳定性方面都超越了它们。

新闻稿翻译

链接