DeepSeek总结的PostgreSQL 19 Beta 1发布说明
来源:https://www.postgresql.org/about/news/postgresql-19-beta-1-released-3313/
PostgreSQL 19 Beta 1 发布!
发布于 2026-06-04,PostgreSQL 全球开发组
PostgreSQL 项目
PostgreSQL 全球开发组宣布,PostgreSQL 19 的第一个测试版现已开放下载。此版本包含了 PostgreSQL 19 在正式发布前的特性预览,但测试期间仍可能更改某些发布细节。
您可以在发布说明中找到有关 PostgreSQL 19 所有功能和更改的信息:
https://www.postgresql.org/docs/19/release-19.html
秉承开源 PostgreSQL 社区的精神,我们强烈建议您在您的系统上测试 PostgreSQL 19 的新功能,以帮助我们发现错误和其他问题。虽然我们建议您不要在生产环境中运行测试版,但我们鼓励您想办法针对此测试版运行典型的应用程序工作负载。
您的测试和反馈有助于社区确保 PostgreSQL 19 符合我们提供稳定、可靠的世界最先进开源关系数据库的标准。请阅读更多关于我们的测试流程以及您如何做出贡献的信息:
https://www.postgresql.org/developer/beta/
PostgreSQL 19 特性亮点
以下是 PostgreSQL 19 计划包含的一些特性亮点。此列表并非详尽无遗;有关计划功能的完整列表,请参阅发布说明。
性能
PostgreSQL 19 建立在 PostgreSQL 18 中引入的异步 I/O 子系统之上。在此版本中,io_method=worker 现在会根据新的 io_min_workers 和 io_max_workers 设置自动扩展 I/O 工作进程的数量。
此版本还引入了 pg_plan_advice 扩展,允许用户稳定和控制规划器的决策,以及 pg_stash_advice 扩展,用于使用查询标识符自动应用建议。
此版本改进了 vacuum 和维护操作。现在 autovacuum 可以使用并行工作进程,这可以通过新的 autovacuum_max_parallel_workers 设置进行配置,并且新的 autovacuum 评分系统有助于确定需要 vacuum 的表的优先级。PostgreSQL 19 还通过一种新策略进一步增强了 vacuum,该策略可以在查询页面的同时将其标记为可见,从而自动减少未来的 vacuum 工作量。此外,此版本添加了新的 REPACK 命令及其非阻塞的 CONCURRENTLY 选项,允许以更少的操作开销重建表。
当存在外键检查时,PostgreSQL 19 在插入操作上显示出高达 2 倍的性能提升。此外,此版本改进了查询规划器和执行器的多个方面,包括新的反连接优化、更广泛地使用增量排序、加速行处理的急切聚合、并行顺序扫描期间更快的存储读取,以及在输入不可为空时将 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 简化为普通的 <> 和 = 运算符。此外,还改进了影响多通道工作负载的 LISTEN/NOTIFY 可扩展性。
开发者体验
PostgreSQL 19 引入了对 SQL/PGQ 的支持,允许用户使用 SQL 标准语法执行属性图查询。此版本还通过增加对 FOR PORTION OF 子句的 UPDATE 和 DELETE 支持,扩展了时间查询能力,补充了 PostgreSQL 18 中添加的时间约束支持。此版本还添加了 ALTER TABLE ... MERGE PARTITIONS 和 ALTER TABLE ... SPLIT PARTITIONS,使就地重组分区表更加容易。现在还支持使用 INSERT ... ON CONFLICT DO SELECT ... RETURNING 返回在 upsert 操作期间发生冲突的行。
PostgreSQL 19 引入了新的 GROUP BY ALL 语法,可以轻松地将所有非聚合和非窗口输出列添加为分组的一部分。此版本通过添加 lower()、upper()、initcap()、replace()、split_part() 以及 trim() 函数系列,扩展了 jsonpath 中的字符串处理能力。
PostgreSQL 19 通过使用新的 WAIT FOR LSN 命令,使得在处理副本时更容易采用“读己之写”查询模式。这允许会话在副本上执行 SELECT 查询之前,一直等待直到特定日志位置(LSN)之前的更改已被重放完毕。
PostgreSQL 19 还添加了新的 SQL 函数来检索重建角色、表空间和数据库所需的 DDL 语句,从而简化了脚本编写和迁移任务。此外,random() 函数现在支持 date 和 timestamp 类型,并且 PL/Python 现在支持事件触发器。
安全特性
PostgreSQL 19 通过一个新的 pg_hosts.conf 文件,为服务器名称指示添加了服务器端支持,允许单个 PostgreSQL 服务器根据客户端请求的主机名提供不同的 TLS 证书。此外,还有一个新的 password_expiration_warning_threshold 设置(默认为 7 天),用于提前警告用户密码即将过期。
随着 md5 身份验证的持续弃用工作,此版本在成功进行 md5 身份验证后会向客户端发出警告。这可以通过新的 md5_password_warnings 设置进行控制。
监控与可观测性
PostgreSQL 19 引入了 pg_stat_lock 视图,报告每种锁类型的统计信息,以及 pg_stat_recovery 视图,提供对恢复操作状态的详细可见性。现在许多统计视图中都有了 stats_reset 列,用于显示计数器上次被清除的时间。pg_stat_progress_vacuum 和 pg_stat_progress_analyze 视图现在包含一个 started_by 列,用于报告操作的发起者,并且 pg_stat_progress_vacuum 还有一个 mode 列,用于报告 vacuum 的运行方式。
此版本还允许按进程类型指定 log_min_messages 级别,使操作员能够更精细地控制系统各部分的日志记录内容。此外,WAL 全页写入的字节计数现在会报告在 VACUUM 和 ANALYZE 的日志输出中,有助于识别生成大量 WAL 的维护操作。另外,EXPLAIN ANALYZE 现在通过其 IO 选项支持显示异步 I/O 统计信息,从而更好地了解查询如何使用 AIO 子系统。
逻辑复制与查询联邦
在 PostgreSQL 19 中,逻辑复制现在可以复制序列值,从而简化了在线升级等任务。此外,新的 CREATE PUBLICATION ... EXCEPT 语法允许您发布数据库中除指定集合之外的所有表,而 CREATE SUBSCRIPTION ... SERVER 允许使用外部服务器定义订阅,从而简化了凭证管理。
PostgreSQL 19 使得无需重启服务器即可启用逻辑复制。现在,即使 wal_level 设置为 replica,也可以按需启用逻辑复制,并且新的只读参数 effective_wal_level 报告当前生效的 WAL 级别。这减少了那些可能只是偶尔需要更高 WAL 级别的集群提前承诺使用更高 WAL 级别的必要性,并避免中断正在运行的工作负载。
用于查询联邦的 PostgreSQL 外部数据包装器 postgres_fdw 包括多项性能改进,包括将数组操作下推到远程服务器,以及从外部表检索和使用统计信息以支持更好的本地查询规划。
其他亮点
PostgreSQL 19 测试版期间包含一个临时的“grease 模式”,用于尝试在更广泛的生态系统中发现协议兼容性问题。此维基页面包含有关该活动如何运作的信息:
https://wiki.postgresql.org/wiki/Grease
PostgreSQL 19 允许在线启用或禁用数据校验和,无需重启集群或重新初始化。
PostgreSQL 19 中有几个值得注意的变化。即时编译现在默认被禁用,default_toast_compression 设置现在默认为 lz4,提供了更好的默认压缩和解压缩性能。对 RADIUS 身份验证的支持现已移除。此外,vacuumdb --analyze-only 命令现在默认分析分区表。
附加功能
PostgreSQL 19 中还添加了许多其他新功能和改进。其中许多可能也对您的用例有所帮助。请参阅发布说明以获取新功能和更改功能的完整列表:
https://www.postgresql.org/docs/19/release-19.html
测试错误与兼容性
每个 PostgreSQL 版本的稳定性在很大程度上取决于您,即社区,是否使用您的工作负载和测试工具来测试即将发布的版本,以便在 PostgreSQL 19 正式发布之前发现错误和性能衰退。由于这是一个测试版,数据库行为、功能细节和 API 的微小更改仍然可能发生。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。
公开的问题列表可在 PostgreSQL 维基上找到。您可以使用 PostgreSQL 网站上的此表格报告错误:
更多推荐
所有评论(0)