PostgreSQL 全球开发组今日宣布发布 PostgreSQL 12,这是世界上 最先进的开源数据库 的最新版本。
PostgreSQL 12 的增强功能包括对查询性能的显著改进,尤其是在处理大型数据集和整体空间利用率方面。此版本为应用程序开发人员提供了新的功能,例如 SQL/JSON 路径表达式支持、公共表表达式 (WITH) 查询的执行优化以及生成列。PostgreSQL 社区持续支持 PostgreSQL 的可扩展性和健壮性,在国际化、身份验证和提供更简便的 PostgreSQL 管理方式方面增加了更多功能。此版本还引入了可插拔表存储接口,允许开发人员创建自己的数据存储方法。
PostgreSQL 全球开发组核心团队成员 Dave Page 表示:“PostgreSQL 开发社区为 PostgreSQL 12 贡献的功能,能在用户付出的极少努力下获得性能和空间管理方面的收益,同时在企业身份验证、管理功能和 SQL/JSON 支持方面也得到了改进。”“此版本延续了我们让管理大、小型数据库工作负载变得更轻松的趋势,同时巩固了 PostgreSQL 在生产环境中在灵活性、可靠性和稳定性方面的声誉。”
PostgreSQL 受益于 20 多年的开源开发,已成为各种规模组织的优选开源关系数据库。该项目持续获得行业认可,例如连续第二年被 DB-Engines 评为 “2018 年度 DBMS”,并在 OSCON 2019 上获得“终身成就奖”开源奖。
PostgreSQL 12 为其索引系统和分区提供了显著的性能和维护增强。
B-tree 索引是 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)统计信息,以帮助在使用分布不均的列时生成更好的查询计划。
引入 PostgreSQL 11 的 即时(JIT)编译(使用 LLVM)现在默认启用。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 编译,它还支持 PostgreSQL 发现 LDAP 服务器。
此外,PostgreSQL 12 现在支持一种多因素身份验证形式。PostgreSQL 服务器现在可以使用 clientcert=verify-full 选项要求身份验证客户端提供有效的 SSL 证书以及他们的用户名,并将此与需要单独的身份验证方法(例如 scram-sha-256)相结合。
PostgreSQL 12 引入了通过 REINDEX CONCURRENTLY 命令在不阻塞写入索引的情况下重建索引的能力,使用户能够避免长时间索引重建带来的停机时间。
此外,PostgreSQL 12 现在可以使用 pg_checksums 命令在离线集群中启用或禁用页面校验和。页面校验和是一项用于帮助验证写入磁盘的数据完整性的功能,以前只能在初始化 PostgreSQL 集群时(使用 initdb)启用。
有关此版本中包含的功能的完整列表,请阅读 发布说明,可在以下网址找到:https://postgresql.ac.cn/docs/12/release-12.html
PostgreSQL 是世界上最先进的开源数据库,拥有由数千名用户、贡献者、公司和组织组成的全球社区。PostgreSQL 项目建立在加州大学伯克利分校始于 30 多年的工程技术之上,并以无与伦比的开发速度持续发展。PostgreSQL 成熟的功能集不仅与顶级专有数据库系统相当,而且在高级数据库功能、可扩展性、安全性和稳定性方面还超越了它们。