PostgreSQL全球开发小组宣布,PostgreSQL 14的第一个测试版现在可供下载。这个版本包含了PostgreSQL 14最终版本中所有功能的预览,尽管在此之前版本的一些细节可能会发生变化。
你可以在发布说明中找到关于PostgreSQL 14的所有功能和变化的信息。
www.postgresql.org/docs/14/rel…
本着开源PostgreSQL社区的精神,我们强烈鼓励您在您的系统中测试PostgreSQL 14的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议你在生产环境中运行PostgreSQL 14 Beta 1,但我们鼓励你想办法在这个测试版中运行你的典型应用工作负载。
您的测试和反馈将帮助社区确保PostgreSQL 14版本坚持我们的标准,为世界上最先进的开源关系型数据库提供一个稳定、可靠的版本。请阅读更多关于我们的beta测试过程以及你如何做出贡献。
www.postgresql.org/developer/b…
PostgreSQL 14功能亮点
性能
PostgreSQL 14延续了最近几个版本的趋势,为各种规模的工作负载提供性能优势。
这个版本对有大量数据库连接的PostgreSQL系统的交易吞吐量有明显的改进,不管它们是处于活动还是空闲状态。
PostgreSQL 14还包含了在减少B树索引开销方面的额外收获,包括减少具有频繁更新索引的表的膨胀。GiST索引现在可以在它们的建立过程中对数据进行预排序,允许更快的索引创建和更小的索引。SP-GiST索引现在支持覆盖索引,允许用户通过INCLUDE
子句向索引添加额外的不可搜索的列。
在PostgreSQL 14中对查询并行性有许多改进。除了并行顺序扫描的整体性能改进外,PL/pgSQL的RETURN QUERY
指令现在可以执行具有并行性的查询。REFRESH MATERIALIZED VIEW
现在也可以使用查询并行性。
PostgreSQL 14还引入了在使用国外数据包装器查询远程数据库时利用查询并行性的能力。PostgreSQL的国外数据包装器,postgres_fdw
,在PostgreSQL 14中设置了async_capable
标志时,增加了对此的支持。postgres_fdw
也支持批量插入,并且可以使用IMPORT FOREIGN SCHEMA
导入表的分区,现在可以在外域表上执行TRUNCATE
。
这个版本对分区系统也有一些改进,包括在只有几个分区受到影响的表上更新或删除行时的性能提升。在PostgreSQL 14中,现在可以使用ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
命令以非阻塞的方式分离分区。
在上一版本中引入的增量排序,现在可以通过PostgreSQL 14中的window functions来使用。这个新版本为扩展统计增加了更多的功能,这些功能现在可以应用于表达式。
几十年来,PostgreSQL一直支持对其 “超大数据 “列进行压缩(即TOAST系统),但这个版本增加了现在可以选择使用LZ4压缩进行列压缩的能力。
数据类型+SQL
在现有的对范围类型的支持基础上,PostgreSQL 14增加了新的多范围类型,让你指定一个非连续范围的有序列表,例如。
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') ) 。
复制代码
新的多范围类型支持现有的范围类型可用的操作。
PostgreSQL 14现在增加了一个通用的下标框架,用于检索嵌套对象中的信息。例如,你现在可以使用下标语法检索JSONB
数据类型中的嵌套信息,例如。
SELECT ('{ "this": { "now": { "works": "in postgres 14!" }}}':jsonb)['this']['now'] ['works']。
复制代码
PostgreSQL 14还在存储过程中增加了对OUT
参数的支持,并允许GROUP BY
子句使用DISTINCT
关键字来移除重复的GROUPING SET
组合。
对于递归的普通表表达式 (WITH
查询),PostgreSQL 14增加了SEARCH
和CYCLE
的语法便利,分别帮助排序和循环检测。
在PostgreSQL 14中还有一个新的date_bin
函数,可以将时间戳与指定的时间间隔对齐,这种技术被称为 “binning”。
管理
PostgreSQL 14对VACUUM
进行了大量改进,并针对索引进行了优化。Autovacuum现在可以分析分区表,并且可以将行数的信息传播到父表。在ANALYZE
中也有性能提升,可以用maintenance_io_concurrency
参数控制。
PostgreSQL 14在可以监控的信息方面有很多改进,包括使用pg_stat_progress_copy
视图跟踪COPY
的进度。这个版本允许你从pg_stat_wal
视图中跟踪WAL活动,并从pg_stat_replication_slots
视图中检查复制槽统计。
在PostgreSQL 14中有几个新的参数来帮助管理连接。这些参数包括 idle_session_timeout
,它可以在指定时间后关闭空闲的连接,以及 client_connection_check_interval
参数,如果客户端断开连接,PostgreSQL可以取消长期运行的查询。
REINDEX
命令现在可以处理一个分区表的所有子索引,PostgreSQL 14增加了pg_amcheck
工具来帮助检查数据损坏。
复制和恢复
PostgreSQL 14为逻辑复制增加了许多性能优势,包括将正在进行的事务流向订阅者而不是等待它们完成的能力。ALTER SUBSCRIPTION
使用新的ADD/DROP PUBLICATION
语法,使添加/删除出版物更加容易。
在PostgreSQL 14中,对PostgreSQL在崩溃恢复时的启动方式进行了性能改进,现在你可以在处于待机模式的PostgreSQL实例上使用pg_rewind
。
安全
PostgreSQL 14增加了通过使用pg_read_all_data
和pg_write_all_data
预定义角色分别给予用户在表/视图/序列上的通用 “只读 “和 “只写 “权限的能力。
这个版本也默认在新的PostgreSQL实例上使用SCRAM-SHA-256进行密码管理。此外,pg_hba.conf
中的clientcert
参数现在必须使用verify-ca
或verify-full
的值,而不是传统的值。
PostgreSQL 14可以在pg_hba.conf
文件中使用clientname=DN
参数为基于证书的认证使用证书的 “区分名”(DN)。
额外功能
在PostgreSQL 14中增加了许多其他的新功能和改进,其中一些可能比上面提到的对你的使用情况同样重要或更重要。请参阅发布说明,了解新的和改变的功能的完整列表。
www.postgresql.org/docs/14/rel…
测试错误和兼容性
每个PostgreSQL版本的稳定性在很大程度上取决于你,社区,用你的工作负载和测试工具来测试即将发布的版本,以便在PostgreSQL 14全面上市之前发现错误和回归。由于这是一个Beta版,对数据库行为、功能细节和API的微小改变仍然是可能的。你的反馈和测试将有助于决定新功能的最终调整,所以请在不久的将来进行测试。用户测试的质量有助于决定我们何时可以进行最终发布。
在PostgreSQL的维基中公开了一个开放问题的列表。你可以使用PostgreSQL网站上的这个表格报告错误。
www.postgresql.org/account/sub…
测试版时间表
这是第14版的第一个测试版。PostgreSQL项目将根据测试的需要发布额外的测试版,然后是一个或多个候选版,直到2021年底的最终版本。更多信息请见测试版页面。