暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 18正式发布!新特性解析(附一键安装脚本)

热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者比较重要的内容,希望大家能够喜欢,不足之处请大家多提宝贵地意见,我们一起提升,守住自己的饭碗。

关注公众号,技术道路不迷路

 

 

PostgreSQL 18于2025 年9月25日正式发布,作为一款主流开源关系型数据库,其新版本聚焦性能突破、功能扩展与安全性强化,涵盖异步 I/O、索引优化、认证升级等关键更新,同时明确了数据迁移的兼容性要求。

官网地址:http://postgresql.org/

一、核心新特性:重塑性能与灵活性

PostgreSQL 18 的新功能直接针对实际业务场景中的性能瓶颈与功能缺口,核心亮点包括:

  1. 1. 异步 I/O(AIO) subsystem
    支持后端队列化多个读请求,大幅提升顺序扫描、位图堆扫描、VACUUM 等操作的效率。可通过 io_method
     变量启用,配合 io_combine_limit
     控制,同时让无 fadvise()
     支持的系统也能使用 effective_io_concurrency
    (默认值提升至 16)。
  2. 2. 多列 B 树索引“跳过扫描”(Skip Scan)
    突破传统多列索引的限制——即使未对前序列加过滤条件,只要后续列有有效约束,仍可使用索引,显著扩展多列索引的适用场景。
  3. 3. 虚拟生成列(默认)
    生成列从“写入时计算”改为读取时计算(默认虚拟模式),减少写入开销;若需保留原行为,可通过 STORED
     选项指定。
  4. 4. OAuth 认证支持
    新增 oauth
     认证方式(配置于 pg_hba.conf
    ),配合 oauth_validator_libraries
     加载令牌验证库,提升身份认证的灵活性与安全性。
  5. 5. 时态约束(Temporal Constraints)
    支持对 PRIMARY KEY、UNIQUE、FOREIGN KEY 添加范围约束(如 WITHOUT OVERLAPS
     限制主键无重叠范围),满足时间序列数据等场景的唯一性需求。
  6. 6. UUIDv7 生成函数
    新增 uuidv7()
     函数,生成带时间戳排序属性的 UUID,解决 UUIDv4 无序导致的索引碎片化问题;同时保留 uuidv4()
     作为显式生成 v4 版本的别名。
  7. 7. RETURNING 子句支持 OLD/NEW
    INSERT、UPDATE、DELETE、MERGE 命令的 RETURNING 可显式返回“旧值”(OLD
    )与“新值”(NEW
    ),无需额外查询即可获取数据变更前后的完整状态。

二、迁移与兼容性:必看的 5 个关键变更

升级至 PostgreSQL 18 需通过 pg_dumpall、pg_upgrade 或逻辑复制 迁移数据,同时需注意以下不兼容变更:

变更类型
具体影响
应对方案
initdb 默认启用数据校验和
新集群默认开启数据完整性校验,pg_upgrade 要求新旧集群校验和配置一致
若需兼容旧集群(无校验和),可通过 initdb --no-data-checksums
 禁用
MD5 密码认证弃用
CREATE/ALTER ROLE 设置 MD5 密码时会触发警告,未来版本将移除支持
优先迁移至 SCRAM 认证;若需临时关闭警告,可设置 md5_password_warnings = off
VACUUM/ANALYZE 处理继承子表
默认会递归处理父表的继承子表,与旧版本“仅处理父表”行为相反
需保留旧行为时,添加 ONLY
 选项(如 VACUUM ONLY 父表
)
CSV 格式 COPY 禁用 . 作为EOF
避免误判数据中的 . 为结束符,但旧 psql 客户端连接 18 服务器可能出现 \copy 问题
升级 psql 客户端至 18 版本;确保 . 必须单独占一行(新版本强制校验)
不允许未日志化(UNLOGGED)分区表
旧版本“创建 UNLOGGED 分区表但子表仍为日志化”的无效行为被禁止
需改为“所有分区统一日志化”或“不使用分区表+UNLOGGED”

三、关键优化:性能、监控与灵活性升级

1. 优化器与索引:更智能的查询执行

  • • 优化器增强:自动消除不必要的表自连接(可通过 enable_self_join_elimination
     禁用)、将 IN (VALUES ...)
     转为 x = ANY ...
     以利用统计信息、支持 Right Semi Join
     计划,提升复杂查询效率。
  • • 索引扩展:GIN 索引支持并行创建、范围类型 GiST/btree 索引构建时可排序(加速索引创建)、非 btree 唯一索引可作为分区键。

2. 性能与资源管控

  • • 哈希连接/GROUP BY 优化:减少内存占用,同时加速 EXCEPT 集合操作与子计划哈希查找。
  • • VACUUM 精细化控制:新增 vacuum_truncate
     变量控制文件截断、vacuum_max_eager_freeze_failure_rate
     调整全可见页冻结策略,降低后续全表冻结开销。
  • • NUMA 架构支持:通过 configure --with-libnuma
     启用 NUMA 感知,新增 pg_shmem_allocations_numa
     视图查看内存跨节点分布,适配大型服务器硬件。

3. 监控能力强化

  • • 日志与统计扩展:log_connections
     支持细粒度配置(如记录连接阶段耗时)、pg_stat_io
     新增 read_bytes/write_bytes
     列(统计 I/O 字节数)、pg_stat_checkpointer
     新增 num_done
     列(记录完成的检查点数量)。
  • • 后端 I/O 追踪:新增 pg_stat_get_backend_io()
     函数查看单后端 I/O 统计,支持 pg_stat_reset_backend_stats()
     重置,便于定位慢查询的 I/O 瓶颈。

四、工具与扩展:更易用的管理体验

1. 核心工具升级

  • • pg_upgrade 优化:支持保留优化器统计信息(减少升级后 ANALYZE 耗时)、可并行处理数据库检查(通过 --jobs
     控制)、新增 --swap
     选项(直接交换目录,最快迁移方式)。
  • • psql 增强:支持管道查询(\startpipeline
    /\sendpipeline
     等命令)、\conninfo
     输出改为表格格式(含更多连接细节)、新增 WATCH_INTERVAL
     变量设置 \watch
     默认间隔。
  • • COPY 功能扩展:新增 REJECT_LIMIT
    (忽略无效行的最大数量,配合 ON_ERROR = 'ignore'
     使用)、支持从物化视图导出数据(COPY TO 物化视图
    )。

2. 扩展功能更新

  • • pg_stat_statements:新增 parallel_workers_to_launch
    /parallel_workers_launched
     列(追踪并行查询)、支持参数化 SET 语句(减少重复语句膨胀)。
  • • pgcrypto:新增 sha256crypt/sha512crypt 算法、支持 CFB 加密模式、新增 fips_mode()
     函数查看 FIPS 模式状态。
  • • 新增扩展:pg_logicalinspect
    (查看逻辑快照)、pg_overexplain
    (为 EXPLAIN 增加调试细节)。

五、一键安装

脚本链接:

https://blog.csdn.net/qq_36936192/article/details/151841725?spm=1011.2415.3001.10575&sharefrom=mp_manage_link


六、小结

PostgreSQL 18 以“性能提升为核心,功能扩展为辅助,安全性强化为基础”,通过异步 I/O、Skip Scan、虚拟生成列等特性解决实际业务中的效率痛点,同时通过 OAuth 认证、MD5 弃用提升安全性。对于需要升级的用户,需重点关注数据校验和、VACUUM 行为等兼容性变更,优先采用 pg_upgrade 并保留统计信息以减少停机时间。无论是大型企业的高并发场景,还是中小型团队的灵活运维需求,PostgreSQL 18 均提供了更优的数据库解决方案。

【实用脚本】银河麒麟V10离线一键编译安装Postgresql17

 



END
往期文章回顾

文中的概念来源于互联网,如有侵权,请联系我删除。

欢迎关注公众号:小周的数据库进阶之路,一起交流AI、数据库、中间件和云计算等技术。如果觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以加我微信,拉您进群与业界的大佬们一起交流学习。



文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论