PostgreSQL 全球开发组今天宣布发布 PostgreSQL 12,这是世界上最先进的开源数据库的最新版本。
PostgreSQL 12 的增强包括查询性能的显著提升,尤其是在更大的数据集上,以及整体空间利用率的改善。此版本为应用开发者提供了新的能力,例如 SQL/JSON 路径表达式支持、公共表表达式(WITH 查询)执行方式的优化,以及生成列。PostgreSQL 社区继续支持 PostgreSQL 的可扩展性和稳健性,并在国际化、认证以及更易于管理 PostgreSQL 的方式上进一步增强。此版本还引入了可插拔的表存储接口,允许开发者创建自己的数据存储方法。
PostgreSQL 全球开发组核心团队成员 Dave Page 表示:“PostgreSQL 背后的开发者社区为 PostgreSQL 12 贡献了诸多功能,让用户几乎无需额外投入就能获得性能和空间管理方面的收益,同时还改进了企业级认证、管理功能和 SQL/JSON 支持。”他说:“此版本延续了 PostgreSQL 一贯在生产环境中灵活、可靠、稳定的声誉,同时让大规模和小规模数据库工作负载都更易于管理。”
得益于超过 20 年的开源开发,PostgreSQL 已成长为各类组织首选的开源关系数据库。该项目持续获得行业认可,包括连续第二年被 DB-Engines 评为“年度数据库管理系统”,并在 OSCON 2019 获得“终身成就”开源奖。
PostgreSQL 12 为其索引系统和分区功能提供了显著的性能和维护增强。
B-树索引,PostgreSQL 中的标准索引类型,在 PostgreSQL 12 中得到优化,以更好地处理索引经常被修改的工作负载。使用 TPC-C 基准测试,PostgreSQL 12 平均将空间利用率降低了约 40%,并整体提升了查询性能。
分区表上的查询也有明显改进,特别是针对拥有数千个分区、但只需要从有限子集提取数据的表。PostgreSQL 12 还改进了通过 INSERT 和 COPY 向分区表添加数据的性能,并支持在不阻塞查询的情况下向表附加新分区。
PostgreSQL 12 还带来了其他索引增强,进一步改善整体性能,包括降低 GiST、GIN 和 SP-GiST 索引类型生成预写式日志(WAL)的开销,支持在 GiST 索引上创建覆盖索引(INCLUDE 子句),支持使用距离运算符(<->)对 SP-GiST 索引执行 K 最近邻查询,以及让 CREATE STATISTICS 现在支持最常见值(MCV)统计,从而帮助在列分布不均匀时生成更好的查询计划。
使用 LLVM 的即时编译(JIT)在 PostgreSQL 11 中引入,现在在 PostgreSQL 12 中默认启用。JIT 编译可以为 WHERE 子句、目标列表、聚合和某些内部操作中的表达式执行带来性能收益,前提是您的 PostgreSQL 安装在编译或打包时包含 LLVM。
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 编译时发现 LDAP 服务器的能力。
此外,PostgreSQL 12 现在支持一种多因素认证形式。PostgreSQL 服务器现在可以要求认证客户端使用 clientcert=verify-full 选项提供有效的 SSL 证书,并将其与单独的认证方式(例如 scram-sha-256)结合使用。
PostgreSQL 12 通过 REINDEX CONCURRENTLY 命令引入了无需阻塞索引写入即可重建索引的能力,这有助于用户避免长时间索引重建带来的停机。
另外,PostgreSQL 12 现在可以使用 pg_checksums 命令在离线集簇中启用或禁用页校验和。此前,页校验和这一用于帮助验证写入磁盘数据完整性的功能,只能在使用 initdb 初始化 PostgreSQL 集簇时启用。
如需查看此版本包含的完整功能列表,请阅读 发布说明,其地址为:https://www.postgresql.org/docs/12/release-12.html
PostgreSQL 是世界上最先进的开源关系数据库,拥有一个由数千名用户、开发者、公司和组织组成的全球社区。PostgreSQL 项目已经有 30 多年的历史,起源于加利福尼亚大学伯克利分校,并经历了持续的开发演进。PostgreSQL 的特性集不仅可与顶级商业数据库系统相媲美,而且在高级数据库功能、扩展性、安全性和稳定性方面更进一步。若想了解更多关于 PostgreSQL 的信息,或加入 PostgreSQL 社区,请访问 PostgreSQL.org。
For explanations of the above features and others, please see the following resources:
There are several ways you can download PostgreSQL 12, including:
PostgreSQL 12 comes with HTML documentation HTML documentation as well as man pages, and you can also browse the documentation online in both HTML and PDF formats.
PostgreSQL uses the PostgreSQL License, a BSD-like "permissive" license. This OSI-certified license is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms.
Website
All logos are available for modification and redistribution under The PostgreSQL Licence. The PostgreSQL name and logo are trademarks of The PostgreSQL Community Association of Canada.
PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our sponsors page for some of these project supporters.
There is also a large community of companies offering PostgreSQL Support , from individual consultants to multinational companies.
If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our donations page.