news 2026/6/30 3:14:47

PostgreSQL 19前瞻:一次兼顾创新与实用的版本升级

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL 19前瞻:一次兼顾创新与实用的版本升级

每一个 PostgreSQL 版本似乎都有属于自己的“性格”。有些版本因某项重量级特性而被铭记,有些版本则解决了长期存在的核心痛点;还有一些版本,则通过大量细节优化,让升级后的日常使用体验变得更加顺畅。而几乎每一个 PostgreSQL 大版本发布,都会伴随着性能方面的持续提升。

PostgreSQL 19 更像是一个兼具多种特质的版本。内置的REPACK CONCURRENTLY为大型生产数据库带来了重要的运维体验提升,并且成为核心能力的一部分。与此同时,也不乏备受关注的重要特性,例如 SQL 属性图查询能力(SQL/PGQ)。逻辑复制持续完善,VACUUM、EXPLAIN、COPY、分区、监控、性能优化以及查询优化器等多个领域也迎来了稳步演进。这些改进或许不像某些明星特性那样耀眼,但对于生产环境而言,却意味着更加稳定、高效和易于维护的数据库系统。

与所有 Beta 版本一样,部分细节在正式发布前仍可能发生变化。不过,随着 PostgreSQL 19 Beta 的发布,现在已经是了解即将到来的变化,以及评估这些变化对生产环境影响的最佳时机。

开箱即用的 REPACK

对于长期运行 PostgreSQL 的系统而言,几乎都曾面临过表膨胀治理、表重写或者数据重组的需求。然而,VACUUM FULLCLUSTER所需要持有的锁,往往意味着生产业务无法接受的停机窗口。

围绕这一问题,PostgreSQL 生态长期以来形成了成熟的扩展解决方案,其中最具代表性的便是pg_repack。扩展生态的繁荣本身便说明了一件事情:这一需求真实存在,并且足够重要。

PostgreSQL 19 将全新的REPACK命令正式纳入核心系统,同时支持REPACK CONCURRENTLY。对于生产环境用户而言,REPACK CONCURRENTLY很可能会成为一个比大多数发布说明阅读者预想中更加重要的特性。

分区功能变得更加实用

近年来,PostgreSQL 的分区能力取得了显著进步。从最初“理论上可用,但需要深入理解内部机制和各种限制条件”,逐渐演进为更加成熟且易于使用的能力。

PostgreSQL 19 在此基础上进一步增加了分区合并与分区拆分能力。这一变化看似简单,却解决了实际生产环境中的一个常见问题。

分区策略往往是在信息并不充分的情况下制定的。初期设计的分区方案可能适用于当前业务,但随着时间推移,业务负载可能发生变化,数据保留周期可能发生调整,数据增长速度可能超出预期,甚至部分分区可能变得异常庞大,而另外一些分区则非常小。

能够对分区进行拆分与合并,为数据库架构演进提供了更大的灵活性。

-- Combine Q1 and Q2 into a single partition ALTER TABLE customer_orders MERGE PARTITIONS (orders_2026_q1, orders_2026_q2) INTO orders_2026_h1;
-- Split the Q3 partition into monthly intervals ALTER TABLE customer_orders SPLIT PARTITION orders_2026_q3 INTO ( PARTITION orders_2026_07 FOR VALUES FROM ('2026-07-01') TO ('2026-08-01'), PARTITION orders_2026_08 FOR VALUES FROM ('2026-08-01') TO ('2026-09-01'), PARTITION orders_2026_09 FOR VALUES FROM ('2026-09-01') TO ('2026-10-01') );

优秀的数据库设计通常并非一成不变,而是能够随着业务持续演进。PostgreSQL 提供更多无需重建整个体系即可调整架构的能力,正是其长期适用于生产环境的重要原因之一。

逻辑复制持续成熟

逻辑复制已经成为 PostgreSQL 最近多个版本持续重点投入的领域之一。数据库迁移、版本升级、报表系统建设、数据同步、选择性复制,以及越来越多的高可用与运维场景,都在依赖逻辑复制能力。

PostgreSQL 19 在这一领域继续补齐关键能力。其中最重要的一项改进是:序列值(Sequence)开始支持同步。对于依赖序列生成主键的业务系统而言,仅同步数据而不同步序列状态,往往会在业务切换后带来问题。数据虽然已经同步完成,但下一个生成的 ID 却可能并不处于正确位置。

PostgreSQL 19 新增了序列同步能力,使订阅端能够更加准确地保持与发布端一致。除此之外,还新增了:

  • Publication 支持ALL SEQUENCES
  • 增强序列同步错误报告能力
  • 优化订阅刷新过程中的序列处理逻辑

另一个值得关注的增强是:Publication 在发布全部表时支持使用EXCEPT子句排除指定表。这更加符合实际生产环境中的使用方式——通常需要同步“几乎所有数据”,但又希望排除少数特殊表。

此外,当需要逻辑复制能力时,wal_level=replica可以自动启用逻辑复制功能,同时新增effective_wal_level用于展示系统实际生效的 WAL 级别。这意味着更少的配置陷阱以及更高的系统可观测性。逻辑复制依然是一项复杂能力,但随着每个版本的演进,它正逐渐从一项高级特性成长为 PostgreSQL 标准运维工具集中的基础组成部分。

Autovacuum 变得更加智能,也更加可观测

VACUUM 可以说是 PostgreSQL 最具代表性的机制之一。很多系统在运行多年后,随着表膨胀、事务回卷风险或者查询性能波动的出现,才真正开始关注 VACUUM 的内部工作机制。

PostgreSQL 19 在这一领域带来了多项值得关注的增强。首先,Autovacuum 开始支持并行 Vacuum Worker,并支持全局和单表级别配置。对于大型表和大型索引而言,这意味着 PostgreSQL 在后台维护任务上的处理能力将进一步增强。

-- Allow up to 4 parallel workers globally for autovacuum processes ALTER SYSTEM SET autovacuum_max_parallel_workers = 4;

同时,新版本引入了新的评分机制,用于控制 Autovacuum 的表处理顺序。这一能力十分重要,因为 Autovacuum 本质上始终在进行资源权衡:哪些表最需要优先处理,哪些任务应该稍后执行。更加智能的优先级排序,能够帮助系统在问题真正影响业务之前完成维护工作。

-- Adjust the priority scoring just for this table: -- Give insert-based vacuuming a massive urgency boost (3.0), -- while dropping the normal update/delete vacuum urgency (0.5) since rows are rarely deleted. ALTER TABLE application_logs SET ( autovacuum_vacuum_insert_score_weight = 3.0, autovacuum_vacuum_score_weight = 0.5 );

除此之外,新版本还新增了pg_stat_autovacuum_scores视图,用于展示评分决策过程。同时,VACUUM 和 ANALYZE 进度视图中也增加了更多信息;VACUUM VERBOSE和 Autovacuum 日志中增加了内存使用情况和并行执行信息;此外,还新增了独立的log_autoanalyze_min_duration参数。

PostgreSQL 19 在维护能力上的一个重要主题,就是提升可观测性。数据库自动完成后台维护工作固然重要,而能够清晰解释这些工作为何发生、如何执行,则更加重要。

SQL 属性图查询正式进入 PostgreSQL

PostgreSQL 19 中最引人关注的新特性之一,便是 SQL/PGQ,即 SQL 属性图查询能力。图数据库在过去多年间经历过多次技术热潮,而某些业务场景确实非常适合采用顶点与边的建模方式,例如:

  • 欺诈检测
  • 推荐系统
  • 网络分析
  • 权限关系分析
  • 供应链分析
  • 组织架构分析
-- sample property graph CREATE PROPERTY GRAPH store_graph VERTEX TABLES ( customers LABEL customer, orders LABEL "order" ) EDGE TABLES ( customer_orders SOURCE customers DESTINATION orders LABEL placed_order );

SQL/PGQ 最有价值的一点在于,它并没有要求放弃关系模型,而是在现有关系数据之上增加了一种新的查询方式。这也非常符合 PostgreSQL 一贯的发展路线。

JSONB 的出现并未取代关系表;全文检索能力并未要求部署独立搜索引擎;扩展机制也并不意味着需要维护数据库分支。如今,SQL/PGQ 为 PostgreSQL 增加了一种基于图结构理解关系数据的新视角。

真正值得关注的,并不是“PostgreSQL 成为了图数据库”,而是“已经选择的数据库平台变得更加全面”。这一差异虽然微妙,却十分重要。对于开发者而言,这意味着许多图查询场景未来可能无需引入新的数据库产品、同步链路以及额外的运维复杂度。而在生产环境中,更少的系统组件通常意味着更低的风险。

COPY 持续变得更加实用

COPY是 PostgreSQL 中一个低调但极其重要的功能。数据导入与导出几乎存在于所有业务场景,因此即使只是一些小幅优化,也能够带来显著价值。

PostgreSQL 19 为COPY带来了多项增强。首先,COPY FROM支持跳过多行 Header。这一能力在处理来自供应商系统、内部工具或者各种导出程序生成的 CSV 文件时非常实用,因为这些文件往往包含额外的元数据描述信息。同时,COPY FROM新增ON_ERROR SET_NULL选项,允许将非法输入自动转换为 NULL。这为“导入失败”和“提前完成全部数据清洗”之间提供了新的选择。

-- Imagine a file where a price column occasionally contains 'N/A' or 'MISSING' instead of a numeric value COPY product_catalog (product_id, title, price_usd) FROM '/path/to/dirty_products.csv' WITH ( FORMAT CSV, HEADER, ON_ERROR SET_NULL );

此外,COPY TO开始支持 JSON 输出格式,包括直接输出为单个 JSON 数组。

-- Export an entire table directly into a cleanly formatted, valid JSON array COPY customers TO '/path/to/customers_export.json' WITH (FORMAT JSON, ARRAY true);

与此同时,分区表也支持直接导出,而无需再通过 COPY (SELECT …) 实现。这些改进或许不会改变世界,但能够持续改善日常数据处理体验。

SQL 易用性改进

PostgreSQL 19 同样带来了多项开发者关注的 SQL 语法增强。GROUP BY ALL可以自动对所有非聚合、非窗口函数表达式进行分组。这对于探索性分析和报表查询场景而言,能够有效减少 SQL 编写复杂度。

-- Using GROUP BY ALL SELECT category, manufacturer, COUNT(*) as total_items, AVG(price) as avg_price FROM inventory_products GROUP BY ALL;

窗口函数新增了IGNORE NULLSRESPECT NULLS支持,包括:

  • lead()
  • lag()
  • first_value()
  • last_value()
  • nth_value()

对于时序分析场景中获取最近一个非空值的需求而言,这将极大简化实现方式。

INSERT ... ON CONFLICT DO SELECT ... RETURNING同样是一个非常实用的增强。Upsert 已经成为现代应用开发中的常见模式,而能够直接返回冲突记录,则进一步提升了灵活性。

INSERT INTO tags (tag_name) VALUES ('postgres') ON CONFLICT (tag_name) DO SELECT RETURNING tag_id;

此外,PostgreSQL 还新增了UPDATE FOR PORTION OFDELETE FOR PORTION OF,进一步完善时态数据处理能力。同时,随机时间函数RANDOM()也得到了扩展。

全面的性能提升

PostgreSQL 19 在查询优化器与执行器层面继续进行了大量优化工作。优化范围包括:

  • Anti Join
  • Semi Join
  • 常量折叠
  • Append Path 下的增量排序
  • Join 前聚合处理
  • Join 选择率计算
  • 函数统计信息等多个领域

相比简单列举优化项,更重要的结论在于:PostgreSQL 正在不断提升对常见查询模式的识别能力,并尽可能减少不必要的计算开销。部分聚合操作现在能够在 Join 之前完成,从而减少参与计算的数据量;更多NOT INLEFT JOIN场景能够自动转换为高效的 Anti Join;Memoize 在EXPLAIN中拥有更好的可观测性;基数排序(Radix Sort)进一步提升排序性能;外键检查速度得到优化;COPY FROM的文本与 CSV 输入开始支持 SIMD 指令加速。

这些优化大多数情况下并不需要修改应用代码。升级完成后,PostgreSQL 将自动拥有更高概率生成更优执行计划。这也是数据库性能优化中最理想的一种形式。

为什么 PostgreSQL 19 显得如此重要

PostgreSQL 19 最突出的特点,并非某一项单独的新功能,而是覆盖面的广度。

应用开发领域拥有:

  • 图查询能力;
  • 更丰富的 SQL 语法;
  • 窗口函数增强;
  • 更完善的 Upsert 行为。

数据库运维领域拥有:

  • REPACK CONCURRENTLY;
  • 更智能的 Autovacuum;
  • 更完善的监控能力;
  • 更丰富的复制可观测性。

性能优化领域拥有:

  • 查询优化器增强;
  • SIMD 优化;
  • 更快的外键检查;
  • 更高效的排序算法。

数据库生态建设领域则拥有:

  • 更多 Hook 能力;
  • Planner Advice 模块;
  • 扩展机制增强;
  • FDW 统计信息获取能力。

这种广泛而均衡的演进方向,正是 PostgreSQL 持续保持竞争力的重要原因之一。它不仅在单一场景持续进步,而是在应用数据库、运维数据库、分析数据库、可扩展数据库以及数据平台等多个维度同步成长。

PostgreSQL 19 尚未正式发布,因此当前正是开展验证测试的最佳时期。包括应用兼容性测试、升级验证、扩展检查、核心查询计划分析、逻辑复制验证以及运维流程测试等工作,都能够帮助社区进一步完善最终版本质量。

PostgreSQL 的持续进步,始终建立在真实业务场景验证的基础之上。而从目前已经进入 Beta 阶段的 PostgreSQL 19 来看,其中已经包含了大量值得关注和验证的新能力。

作者:Craig Kerstiens

原文链接:

https://www.snowflake.com/en/blog/engineering/postgresql-19-features-beta/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 3:14:42

第21届全国大学生智能车竞赛盲盒任务科普视频解说词

简 介: 第二十一届全国大学生智能车竞赛新增硬件盲盒任务,要求参赛队伍现场抽取赛题,使用统一配发的元器件在面包板上独立搭建电路并调试,考验硬件基本功。参赛者需自备4.5V-12V供电设备,严禁私带器件。任务流程包括抽…

作者头像 李华
网站建设 2026/6/30 3:13:09

计算机毕业设计之基于深度学习的垃圾分类与管理系统

本研究基于深度学习和YOLOv11模型,提出了一种垃圾分类与管理系统,旨在解决传统垃圾检测中的效率低、精度不高等问题。随着垃圾问题的日益严重,传统的人工巡检和手动分类方法已经无法满足现代环境保护的需求,因此,需要一…

作者头像 李华
网站建设 2026/6/30 3:12:58

计算机毕业设计之大学生勤工助学信息管理系统

“互联网”的战略实施后,很多行业的信息化水平都有了很大的提升。但是目前很多机构的办公仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,这样就浪费了许多的人力物力,工作效率较低,同时…

作者头像 李华
网站建设 2026/6/30 3:11:58

软考成绩今天才出!结果被打脸了,连这都猜不准唉

上周我说本周出分,结果被打脸了😂结果呢?上周过完了,毛都没有。成绩是今天下午才出的:6月29日周一。从考试结束算起过了36天。从上篇文章的表格里面可以得出的趋势是越来越快,稳定在30天上下。结果2026上半…

作者头像 李华
网站建设 2026/6/30 3:08:39

6个真实用户反馈 森优时铁锌维 白发转黑发 改善周期测评

从用户真实反馈和毛发代谢规律来看,营养补充型产品针对白发转黑发的改善周期和个人基础代谢、白发成因相关,多数使用者能在3-6个月看到初步改善,6个真实用户反馈也印证了这一规律。白发转黑发营养补充的科学依据是什么?毛囊黑色素…

作者头像 李华