PostgreSQL 18 Beta 1发布,有哪些功能亮点?

PostgreSQL 全球开发组于 2025 年 5 月 8 日发布了第一个 PostgreSQL 18 Beta 版本,现已开放下载。虽然细节可能会有所改变,但是该版本包含了 PostgreSQL 18 最终正式版中所有新功能的预览。

以下是 PostgreSQL 18 引入的部分关键功能亮点。

性能优化

  • 异步 I/O(AIO),通过全新的异步 I/O 子系统提升 I/O 吞吐量并隐藏延迟。Linux 系统可使用 io_uring,其他平台则提供基于“工作线程”的通用实现。当前支持顺序扫描、位图堆扫描和 VACUUM 操作的异步文件读取,测试显示性能提升达 2-3 倍。
  • 查询优化,PostgreSQL 18 支持多列 B-Tree 索引 Skip Scan 优化,可以加速缺少前缀列“=”条件的查询;新版本还改进了对 WHERE 子句中 OR 或 IN (…) 条件的索引利用,提升查询性能;hash join 整体性能提升,merge join 支持增量排序。
  • 并行索引构建,支持 GIN 索引的并行构建,通常用于 JSON 和全文搜索场景。
  • 分区表与锁定优化,改进了分区表查询的修剪效率及连接支持,以及多表查询时的锁定开销,提升高并发场景性能。
  • 文本处理优化,提升了文本数据的处理性能,包括 upper/lower 函数性能提升以及一个新的内置排序规则 PG_UNICODE_FAST。

版本升级

  • 优化器统计信息保留,主版本升级后(例如 PostgreSQL 17 升级到 PostgreSQL 18),自动保留统计信息,无需手动执行 ANALYZE,缩短性能恢复时间。
  • pg_upgrade 工具增强,支持并行检查(通过 --jobs 参数),加速包含大量表或序列的版本升级;新增 --swap 标志,通过交换目录而非复制或链接文件加速升级流程。

开发体验

  • 虚拟生成列,PostgreSQL 18 版本的生成列(Generated Columns)默认支持“virtual”模式,只在执行查询时动态计算字段值,无需占用存储;另外,存储式生成列可以支持逻辑复制。
  • RETURNING 子句扩展,INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING 子句支持同时访问旧值(OLD)和新值(NEW)。
  • UUIDv7,新增 uuidv7() 函数生成时间戳有序的 UUID,优化缓存策略;同时新增 uuidv4() 作为 gen_rand_uuid 的别名。
  • 模式匹配增强,支持对非确定性排序规则的文本进行 LIKE 匹配,新增 CASEFOLD 函数用于大小写不敏感的匹配。
  • 约束增强,主键和唯一约束支持“无重叠”的时间范围约束(WITHOUT OVERLAPS),外键支持 PERIOD 子句。

安全特性

  • OAuth 认证,支持通过扩展实现 OAuth 2.0 认证机制。
  • FIPS 模式与 TLS 1.3,新增 FIPS 模式验证与强制功能;支持通过 ssl_tls13_ciphers 配置 TLS 1.3 加密套件。
  • SCRAM 默认认证,PostgreSQL 18 开始弃用 md5 密码认证,全面转向 SCRAM,未来版本将彻底移除 md5 认证;postgres_fdw 和 dblink 支持 SCRAM 透传认证访问远程 PostgreSQL 实例。

可观测性

  • EXPLAIN 增强,EXPLAIN ANALYZE 自动显示缓冲区访问次数及索引查找次数;EXPLAIN ANALYZE VERBOSE 新增 CPU、WAL 及平均读取统计信息。
  • 统计视图扩展,pg_stat_all_tables 新增表级 VACUUM 和分析耗时统计;新增连接级 I/O 和 WAL 使用统计;逻辑复制冲突信息记录至日志及 pg_stat_subscription_stats 视图。

其他亮点

  • 默认启用数据校验和,PostgreSQL 18 开始的新集群默认启用数据校验和功能,可通过 initdb --no-data-checksums 禁用。
  • 约束功能增强,外键和检查约束支持 NOT ENFORCED 以及 ENFORCED 属性;NOT NULL 约束支持自定义名称,更加符合 SQL 标准; 同时还支持 NOT VALID 和 NO INHERIT 子句,与继承功能一致。
  • pg_createsubscriber,新增 --all 标志,支持一键为实例中所有数据库创建逻辑副本。
  • 外部表定义,新增 CREATE FOREIGN TABLE … LIKE 命令,可以基于本地表定义创建外部表。
  • PostgreSQL 协议,推出新版 PostgreSQL 3.2 版本总线协议,libpq 仍然使用 3.0 协议,客户端驱动增加了新协议支持。

更多特性

除了以上内容,PostgreSQL 18 还增加了大量的新功能和改进,完整的新特性列表可以参考官方的发行说明:

https://www.postgresql.org/docs/18/release-18.html

PostgreSQL 18 正式版计划将于 2025 年 9 月左右发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/904795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue dev-tools插件

背景 在项目上用到vue技术,在bilibili上学习vue,期间老师推荐使用vue dev-tools调试神器,所以过来安转和使用了,用了感觉不错,希望给大家带来效率的提升。 定义 Vue DevTools 是一款旨在增强 Vue 开发者体验的工具&am…

单片机-FLASH软件模拟EEPROM,提升flash保存重要参数的使用寿命

目录 1. FLASH和EEPROM读写数据的对比   2. FLASH模拟EEPROM的原理   3. FLASH模拟EEPROM的优点   4. 实战项目工程代码 1. FLASH和EEPROM读写数据的对比 1.1 擦除操作 EEPROM通常支持按单字节擦除和写入,这一特性使其非常适合需要频繁更新小量数据的应…

探索Stream流:高效数据处理的秘密武器

不可变集合 stream流 Stream流的使用步骤: 先得到一条Stream流(流水线),并把数据放上去 使用中间方法对流水线上的数据进行操作 使用终结方法对流水线上的数据进行操作 Stream流的中间方法 注意1:中间方法&#xff0…

vue3笔记(自存)

1. Vue3简介 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(n 经历了:4800次提交、40个RFC、600次PR、300贡献者 官方发版地址:Release v3.0.0 One Piece vuejs/core 截止2023年10月,最…

实验4 mySQL查询和视图

一、实验目的 掌握SELECT语句的基本语法多表连接查询GROUP BY的使用方法。ORDER BY的使用方法。 二、实验步骤、内容、结果 实验内容: 实验4.1数据库的查询 目的与要求 (1)掌握SELECT语句的基本语法。 (2)掌握子查询的表示。 (3)掌握连接查询的表示。 (4)掌…

【bug】fused_bias_act_kernel.cu卡住没反应

简述 在推理人脸修复face restoration算法 GPEN的时候,发现有时候fused_bias_act_kernel.cu卡住没反应。 解决 清理下缓存,让程序自己再编译下

.net/C#进程间通信技术方案总结

C# 应用进程间通信(IPC)技术方案 进程间通信(Inter-Process Communication, IPC)是不同进程之间交换数据和消息的机制。以下是C#中常用的IPC技术方案: 1. 命名管道(Named Pipes) 适用于本地机器上的进程通信,支持双向通信。 ​​服务端示例​​&…

阿里云服务器数据库故障排查指南?

阿里云服务器数据库故障排查指南? 以下是针对阿里云服务器(如ECS自建数据库或阿里云RDS等托管数据库)的故障排查指南,涵盖常见问题的定位与解决方案: 一、数据库连接失败 检查网络连通性 ECS自建数据库 确认安全组规则放行数据库…

深度学习 ———— 迁移学习

迁移学习原理 什么是迁移学习? 迁移学习利用在大规模数据集(如ImageNet)上预训练的模型,改装小数据集(如CIFAR-10)。优势: 减少训练时间:预训练模型已学习通用特征(如边…

单调栈模版型题目(3)

单调栈型题目贡献法 基本模版 这是数组a中的 首先我们要明白什么叫做贡献,在一个数组b{1,3,5}中,连续包含1的连续子数组为{1},{1,3},{1,3,5},一共有三个,这三个数一共能组成6个连续子数组,而其…

日常知识点之随手问题整理(思考单播,组播,广播哪个更省带宽)

新入职的公司在某些场景下无脑使用组播技术,自己突然就意识到一个问题:单播,组播,广播,哪个更省带宽? 有所收获,做点笔记,仅仅是个人理解~ 1:简单理解 单播&#xff1…

R1-Omni

一、Omni概述 Omni 文本视频音频,全模态。 R1Omni 强化学习全模态。 二、Omni举例-humanOmni humanOmni:以人体姿态和人物交互为中心的全模态模型。 visual projector有3个,分别负责人脸标签、姿态检测、人和物交互。有点像moe。text enc…

linux中的日志分割

1.问题背景,nginx日志过大不好删除 [rootlocalhost cron.daily]# cd /lk/nginx/log/ [rootlocalhost log]# ll 总用量 2386188 -rw-r--r--. 1 root root 2078699697 5月 9 13:02 access.log -rw-r--r--. 1 root root 11138 5月 6 10:28 error.log [rootloc…

华为云Flexus+DeepSeek征文|从开通到应用:华为云DeepSeek-V3/R1商用服务深度体验

前言 本文章主要讲述在华为云ModelArts Studio上 开通DeepSeek-V3/R1商用服务的流程,以及开通过程中的经验分享和使用感受帮我更多开发者,在华为云平台快速完成 DeepSeek-V3/R1商用服务的开通以及使用入门注意:避免测试过程中出现部署失败等问…

【机器学习-线性回归-5】多元线性回归:概念、原理与实现详解

线性回归是机器学习中最基础且广泛应用的算法之一,而多元线性回归则是其重要扩展。本文将全面介绍多元线性回归的核心概念、数学原理及多种实现方式,帮助读者深入理解这一强大的预测工具。 1. 多元线性回归概述 1.1 什么是多元线性回归 多元线性回归(…

GOC指令

网络版GoC常见绘图命令说明 (V3.8) 目录 l 基本画图命令 fd, bk, lt, rt l 设置笔状态命令 c, rgb, size, up, down l 状态命令 show, hide, speed, showXY, wait, pause, cls, clsRec l 增强画图命令 o, oo, e, ee, r, rr l 坐标命令 moveTo, lineTo, g…

Qt获取CPU使用率及内存占用大小

Qt 获取 CPU 使用率及内存占用大小 文章目录 Qt 获取 CPU 使用率及内存占用大小一、简介二、关键函数2.1 获取当前运行程序pid2.2 通过pid获取运行时间2.3 通过pid获取内存大小 三、具体实现五、写在最后 ​ 一、简介 近期在使用软件的过程中发现一个有意思的东西。如下所示&a…

期刊论文写作注意点

下面给出关于期刊写作的几个关键注意点 一、摘要突出创新点 最重要的是论文的摘要,因为在论文送审的时候,编辑如果没有时间,最先看的就是摘要。摘要要写好。如果投的是顶刊,在摘要里面尽量不要写是在什么方法的基础上进行改进之类…

Swagger 3.0 中注解详细示例

Swagger 3.0 提供了丰富的注解来详细描述 API 的请求和响应。以下是一个使用 Operation、Parameter、RequestBody 和 ApiResponse 注解的示例,展示了如何设置请求头、请求参数、路径变量、请求体和响应体。代码中未使用 DTO 对象,而是使用 Map 来传递参数…

切比雪夫不等式专题习题解析

切比雪夫不等式专题习题解析 前言 本文为概率论习题集专栏的切比雪夫不等式专题习题解析,针对习题篇中的10道题目提供详细解答。希望通过这些解析帮助大家深入理解切比雪夫不等式的应用和意义。 一、基础概念题解析 习题1解析: 错误。切比雪夫不等式适用于任何具有有限方…