2025 年 5 月 8 日,PostgreSQL 全球开发小组宣布, PostgreSQL 18 的第一个预览版本开放下载。同时,针对目前所有支持中的 PostgreSQL 版本进行更新,包括 17.5、16.9、15.13、14.18 和 13.21。PostgreSQL 13 将于 2025 年 11 月 13 日发布最后一个版本,建议将生产环境中运行的 PostgreSQL 13 进行大版本升级。
PostgreSQL 18 在性能、主版本升级体验、开发者体验、安全特性、监控与可观测性等方面都有诸多改进和新特性。以下是 PG 18 计划推出的主要功能亮点。
引入异步 I/O(AIO)子系统:该子系统能够提升 I/O 吞吐量并降低 I/O 延迟。Linux 系统
io_uring 支持 AIO,所有平台均提供基于 Worker 的实现。初始版本支持文件系统读取,例如顺序扫描、位图堆扫描和清理,测试显示性能提升高达 2-3 倍。
查询优化与新索引特性:支持在多列 B 树索引上使用 “跳查扫描” 查找,以缩短在一个或多个前缀索引列上省略“=”条件的查询的执行时间。此版本还包含对WHERE包含“OR和IN (…)”语句的子句的优化,以便更好地利用最新的索引改进,从而提升查询性能。在表连接的规划和执行方面有诸多性能改进,从提升哈希连接的整体性能到允许合并连接使用增量排序。
其他性能提升:支持 GIN 索引的并行构建,提高处理 JSON 和全文数据的搜索效率。允许定义非 B
树的唯一索引的分区键和物化视图。提高了访问多个关系的查询的整体锁定性能,并对分区表查询进行了多项改进,包括改进的修剪和连接支持。在文本处理方面也有性能提升,如加速
upper/lower 函数,新增内置的
PG_UNICODE_FAST 排序规则。
保留规划器(planner)统计信息:在 PostgreSQL 18 之前,主版本升级后需运行
ANALYZE 生成统计信息以帮助 PostgreSQL 选择最有效的查询计划,这可能耗时且影响查询性能。PostgreSQL 18 允许在主版本升级过程中保留规划器统计信息,使升级后的集群更快达到预期性能状态。
pg_upgrade 性能增强:pg_upgrade 工具增加了多项性能增强功能,可加速包含许多对象(如表和序列)的升级。此版本还允许 pg_upgrade 根据
--jobs 标志的设置并行处理其检查,并增加了
--swap 标志,用于交换升级目录,而不是复制、克隆或链接文件。
引入虚拟生成列:PostgreSQL 18 引入虚拟生成列,在查询执行期间即时计算列值,无需存储,这成为生成列的默认选项。此外,存储的生成列可以进行逻辑复制。
增强 RETURNING 子句功能:在 INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING 子句中,可访问前值(OLD)和当前值(NEW)。
支持 UUIDv7 生成:通过
uuidv7() 函数支持 UUIDv7 生成,可创建按时间顺序排列的随机 UUID,以支持更好的缓存策略,同时添加
uuidv4() 作为
gen_rand_uuid 的别名。
OAuth 认证:PostgreSQL 18 引入 OAuth 认证,允许用户通过 PostgreSQL 扩展支持的 OAuth 2.0 机制进行身份验证。
FIPS 模式与 TLS 配置:添加多项功能以验证和强制执行 FIPS 模式行为,并添加
ssl_tls13_ciphers 选项,允许用户配置服务器可以使用的 TLS v1.3 密码套件。
认证相关更新:弃用 md5 密码认证,未来主版本发布将完全移除 md5 认证,转而支持使用首s次在 PostgreSQL 10 中引入的 SCRAM 认证。同时,添加对 SCRAM 传递认证的支持,当通过
postgres_fdw 和
dblink 认证到远程 PostgreSQL 实例时进行身份认证。
EXPLAIN 工具增强:PostgreSQL 18 为 ·EXPLAIN· 工具添加更多详情,执行
EXPLAIN ANALYZE 时自动显示访问的缓冲区数量,还显示索引扫描期间发生的索引查找次数,
EXPLAIN ANALYZE VERBOSE 包含 CPU、WAL 和平均读取统计信息。
表统计与连接统计信息:在
pg_stat_all_tables 中提供有关清理和分析表所花费的总时间的信息,并显示每个连接的 I/O 和 WAL 利用统计信息。
逻辑复制写冲突洞察:提供更多关于逻辑复制期间发生的写冲突的洞察,并在日志和
pg_stat_subscription_stats 视图中显示此信息。
完整的新功能和改进功能列表,请参阅发行说明:
https://www.postgresql.org/docs/18/release-18.html
更多新版本洞察,请参考彭老师的文章:
PG18 beta 版发布 | 兼容性解读 附9~17不兼容民间案例:JDBC-硬限制、分区表-DDL等待…zip请查收~
PostgreSQL GB18030 编码验证中的缓冲区过度读取漏洞允许数据库输入提供程序在单字节过度读取即可导致进程终止的平台上实现暂时拒绝服务。这会影响数据库服务器以及 libpq。PostgreSQL 17.5、16.9、15.13、14.18 和 13.21 之前的版本均受影响。
CVSS v3.1 基本评分:5.9
此次 PostgreSQL 更新修复了超 60 个漏洞,涵盖正确处理分区表自引用外键、解决 BRIN bloom 索引潜在数据丢失问题、逻辑复制相关修复等众多方面,提升了数据库的稳定性、数据安全性及性能。同时更新时区数据,新增及调整部分时区信息,以适应不同地区的时区变化情况,确保数据库在处理时间数据时的准确性。
下面列出影响 PostgreSQL 17 的部分问题,其中一些问题也可能影响其他受支持的 PostgreSQL 版本。
date_bloom_ops 操作符类时出现的问题。MERGE 并带有
DO NOTHING 操作的问题 。ALTER TABLE .. ADD COLUMN 以正确处理具有默认值的域类型且未设置列的 DEFAULT 的情况 。XMLSERIALIZE() 函数,使其在视图或规则中存在 INDENT 选项时能够正确转储该选项 ,在还原时该问题较为明显。完整的发行说明参见:
https://www.postgresql.org/docs/release/17.5/
Amazon Relational Database Service (RDS) for PostgreSQL 现已支持最新的次要版本 17.5、16.9、15.13、14.18 和 13.21。我们建议您升级到最新的次要版本,以修复 PostgreSQL 早期版本中已知的安全漏洞,并受益于 PostgreSQL 社区添加的错误修复。此版本还包含 PostgreSQL 扩展的更新,例如 pg_repack 1.5.1、 pg_logical 2.4.5 等。
您可以使用自动次要版本升级功能,在计划维护时段内自动将数据库升级到较新的次要版本。您还可以使用 Amazon RDS 蓝/绿部署,通过物理复制进行 RDS for PostgreSQL 的次要版本升级。
通告原文:
https://aws.amazon.com/about-aws/whats-new/2025/05/amazon-rds-postgresql-supports-new-minor-versions/
Have a nice day ~ ☕
🌻 往期精彩 ▼
– / END / –
👉 这里可以找到我
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。
如果这篇文章为你带来了灵感或启发,请帮忙『 三连』吧,感谢!ღ( ´・ᴗ・` )~
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31492144/viewspace-3083699/ ,如需转载,请注明出处,否则将追究法律责任。