翻译:doudou586 ... 新闻稿采编:2021-05-22 18:22:07+08

软件发布:2021-05-22

2021-05-20,PostgreSQL全球开发组宣布PostgreSQL 14的第一个Beta版本正式提供下载。这个版本包含将来PostgreSQL 14正式版本中的所有特性和功能,当然一些功能的细节在正式版本发布时可能会有些变化。 可以从以下网址浏览PostgreSQL 14版本所有的新特性和变化内容。按PostgreSQL开源社区的精神,我们鼓励大家在用户的场景下测试新功能,以帮助我们消除Bug或是其他可能存在的问题。当然我们不建议大家在生产环境使用PostgreSQL 14 Beta1版本, 我们鼓励在用户使用生产环境下的数据或工作负载测试这个版本。用户的测试将帮助社区来确保PostgreSQL 14版本保持我们一贯以来的标准,即提供稳定、可靠的世界上功能最为强大的开源的关系数据库系统。用户可以从以下网址浏览有关Beta测试的过程以及如何向PostgreSQL项目作贡献的内容。

PostgreSQL 14版本新特性

性能提升
  • PostgreSQL 14版本保持了一贯以来的传统,即在各种规模负载下都可以提供较理想的性能表现。这个版本尤其是在有大量连接的场景下(不论这些连接是活动或是休闲状态),大幅提高了事务的吞吐量。

  • PostgreSQL 14版本也在减少B树索引负载方面有了提高,包括对频繁更新的表索引减少了表膨胀的情况。

  • GiST索引在创建的过程中可以预排序,对快速创建索引或是减小索引大小都有好处。

  • SP-GiST索引 现在支持包含索引,让用户可以通过INCLUDE选项来添加非搜索列至索引中。

  • PostgreSQL 14也在并行查询方面作为较多改进。除了对并行顺序扫描进行了全面提升外,现在PL/SQL中,使用RETURN QUERY可以并行查询,而REFRESH MATERIALIZED VIEW物化视图刷新现在也可以使用并行机制执行了。

  • PostgreSQL 14版本中也对使用外部数据封装器查询远程数据库引入了并行查询机制。在将async_capable参数设置为true后,PostgreSQL的外部数据封装器之一postgres_fdw就支持并行查询,也支持批量导入,同时通过使用IMPORT FOREIGN SCHEMA指令可以导入分区表,甚至还可以对外部表执行truncate批量清除。

  • 14版本也对分区表进行了几处优化,包括对涉及较多分区的记录进行更新或删除。在新版本里,分区表也可以通过使用  ALTER TABLE … DETACH PARTITION … CONCURRENTLY非阻塞的模式进行摘除。

  • 增量排序是从上一个版本引入的功能,现在这个功能在新的14版本中也可以用于窗口函数了。新版本对扩展统计信息也进行了增强。

  • 数十年来PostgreSQL都提供了对大数据列的压缩功能(TOAST大数据列存储技术),在这个14版本中增加了用户可以选择LZ4算法进行数据列压缩的能力。

数据类型 + SQL
  • 在现有PostgreSQL对range类型支持的基础上,新的14版本增加了新的多范围数据类型multirange,让用户可以定义非连续的范围数据,比如 SELECT datemultirange( daterange('2021-07-01', '2021-07-31'), daterange('2021-09-01', '2021-09-30'), daterange('2021-11-01', '2021-11-30'), daterange('2022-01-01', '2022-01-31'), daterange('2022-03-01', '2022-04-07') ) 。新的multirange类型支持range类型的所有操作。

  • PostgreSQL 14版本现也增加了通用的从嵌套对象中提取信息的下标访问机制,比如,从嵌套的JSONB中提取信息: SELECT ('{ "this": { "now": { "works": "in postgres 14!" }}}'::jsonb)['this']['now']['works'];

  • PostgreSQL 14版本也对存储过程提供了新的OUT参数,并且允许GROUP BY使用distinct关键字来移至GROUP SET组合中的重复项。

  • 对可递归的公共表达式CTE功能,PostgreSQL14版本增加了便于理解的语义关键字SEARCH和CYCLE来帮助进行排序或是循环检查。

  • 新版本中也增加了一个date_bin函数,用于处理时间戳与指定的时间间隔的操作,该技术称之为binning。

数据库管理
  • PostgreSQL 14版本中对VACUUM操作也进行了多处改进,特别是针对索引操作。Autovacuum进程现在可以分析分区子表,然后将相关信息传给主表。另外通过设置  maintenance_io_concurrency参数,ANALYZE的性能也会得到提升。

  • PostgreSQL 14版本对可以进行监控或跟踪发信息也进行了改进,包括通过使用pg_stat_progress_copy视图来跟踪COPY的进度,通过使用pg_stat_wal视图来跟踪WAL的活动,通过使用pg_stat_replication_slots视图来检查复制槽的信息。

  • PostgreSQL 14版本中也增加了几个参数来管理数据库连接, idle_session_timeout参数用于在指定时间后,关闭已不活动的连接,client_connection_check_interval参数用于让主进程取消用户已断开连接但仍在长时间运行的查询。

  • REINDEX指令现在对分区表可以让所有分区子表进行索引;14版本也增加了pg_amcheck工具程序来检查数据不一致性的问题。

数据复制和恢复
  • PostgreSQL 14版本中对逻辑复制增加了几处性能优化,包括传递处理中的事务流至订阅者,而不是像以前等事务完成后再发送。 通过使用新的ADD/DROP PUBLICATION语法,来增加或移除发布,使得 ALTER SUBSCRIPTION变更订阅也更简单。
  • 在PostgreSQL宕机后重启时,在新版本中的性能会更好一些;新版本中用户可以也使用pg_rewind指令来操作备机节点。
安全性
  • PostgreSQL 14版本中,通过使用pg_read_all_data 和pg_write_all_data两个预定义的角色,可以给用户进行完全只读或是只写的权限。
  • 新版本中,缺省使用 SCRAM-SHA-256算法来进行密码的管理。另外,在ph_hba.conf配置文件中,clientcert参数现在只能使用verify-ca 或是 verify-full数值 ,以前的参数值不再使用。
  • PostgreSQL 14版本中,如在pg_hba.conf中定义了clientname=DN,则系统会使用证书的专有名称(DN名称)来进行基于证书的认证。

其他的特性功能

许多其他的新特性和改进也加入了PostgreSQL 14,部分内容对一些特定的用户也许比上面提及的改进更重要。请参阅 发布声明详稿 来浏览完整的全部新特性或是改进功能列表。

Bug和兼容性的测试

每一个PostgreSQL版本的稳定性都依赖于社区中的广大用户,来使用自己的工作负载和测试工具来发现Bug及进行回归测试。由于这还是一个Beta版本,数据库操作的方式、新特性的细节以及API可能都还会有小的修改。用户的反馈和测试将帮助我们决定对新特性的最终优化,所以请在近期就进行测试。用户测试的质量将帮助我们决定何时可以发布最终版本。

目前仍待解决的问题在PostgreSQL的WIKI页面上有一个 问题列表。用户可以通过 以下网址来报告Bug:https://www.postgresql.org/account/submitbug/

BETA发布安排

这是PostgreSQL 14的第1个Beta版本,PostgreSQL项目组会根据测试情况来发布更多的测试版本,在2021年末正式版本发布前会发布1个或多个候选版本。更多信息请浏览 Beta版本测试信息

相关链接

© 2010 PostgreSQL中文社区