游乐游手机版
首页/AI教程/文章详情

PostgreSQL 19 Beta1 重磅发布:一文速览全部新特性及变更明细

时间:2026-06-08 16:12
PostgreSQL19Beta1发布,引入SQL PGQ图查询、时态数据局部更新删除、GROUPBYALL、窗口函数IGNORENULLS、REPACK在线表重组及分区合并拆分等新特性。性能方面,JIT默认禁用、并行Autovacuum、SIMD加速COPY、LZ4成为默认TOAST压缩。逻辑复制支持序列同步与发布排除表,监控与可观测性增强,并新增在线数据

PostgreSQL 19 Beta1 这几天正式发布了,作为长期关注 PG 发展的从业者,看到这一版的更新清单,确实有些激动。这次更新的内容密度相当高,从 SQL 标准特性到底层性能优化,再到运维可观测性的加强,几乎覆盖了数据库使用的方方面面。下面把值得关注的新特性逐个梳理一下。

一、SQL 与查询能力大升级

1. SQL 属性图查询(SQL/PGQ)

PG19 正式引入了 SQL/PGQ 标准。这可不是一个小补丁,这意味着你可以在关系型数据上直接执行图查询,而不再需要额外部署一套图数据库。你可以通过 CREATE PROPERTY GRAPH 定义图结构,然后使用 MATCH 子句进行图遍历查询。

-- 建图定义
CREATE PROPERTY GRAPH social_network
NODE TABLES (
    users LABEL person,
    cities LABEL city
)
EDGE TABLES (
    follows SOURCE KEY (follower_id) REFERENCES users(id)
            DESTINATION KEY (followee_id) REFERENCES users(id)
            LABEL follows,
    lives_in
            SOURCE KEY (user_id) REFERENCES users(id)
            DESTINATION KEY (city_id) REFERENCES cities(id)
            LABEL lives_in
);
-- 图查询:查找"我关注的人住在哪些城市"
SELECT city_name
FROM GRAPH_TABLE social_network
MATCH (p:person WHERE p.name ='alice')-[f:follows]-> (friend:person)-[l:lives_in]-> (c:city)
COLUMNS (c.name AS city_name);

这相当于在关系数据库里内嵌了一个图引擎,一库搞定“关系型+图”两个场景。

2. UPDATE/DELETE FOR PORTION OF

这个特性解决了时态数据管理的痛点,支持对时间范围进行局部更新或删除。以往我们要修改某段历史区间的薪资数据,需要做很多复杂的拆分逻辑,现在一条 SQL 就能搞定。

-- 创建时态表
CREATE TABLE employee_salary (
    id INT PRIMARY KEY,
    name TEXT,
    salary NUMERIC,
    valid_from DATE NOT NULL,
    valid_to DATE NOT NULL,
    PERIOD FOR validity (valid_from, valid_to)
);
INSERT INTO employee_salary VALUES
(1, 'alice', 10000, '2025-01-01', '2025-12-31');
-- 只更新 3~6 月的薪资(其余时间段自动拆分保留)
UPDATE employee_salary
FOR PORTION OF validity FROM '2025-03-01' TO '2025-07-01'
SET salary = 12000
WHERE id = 1;
-- 结果会自动拆分为 3 段



同理,局部删除也能精准操作,这在薪资审计、合同管理等场景中非常实用。

3. GROUP BY ALL

一个小细节但很贴心——GROUP BY ALL 简化了语法,自动把所有非聚合列纳入分组,告别手动罗列字段的麻烦。

SELECT region, product, channel, SUM(amount), COUNT(*)
FROM sales
GROUP BY ALL;

4. 窗口函数 IGNORE NULLS

在处理有时间序列缺失值的数据时(比如股票价格、传感器数据),LAG、LEAD、FIRST_VALUE、LAST_VALUE、NTH_VALUE 现在支持 IGNORE NULLS,直接跳过后面的空值取前一个有效值。

SELECT ts, price, LAG(price) IGNORE NULLS OVER (ORDER BY ts) AS prev_valid_price
FROM stock_prices;

5. INSERT ... ON CONFLICT DO SELECT

当插入冲突时,以前只能选择“更新”或“忽略”,现在多了一个选项——直接返回冲突行。这在上层逻辑判断时非常有用,比如需要知道是哪个已有数据导致了冲突。

INSERT INTO users (email, name) VALUES ('alice@test.com', 'alice new')
ON CONFLICT (email) DO SELECT
RETURNING id, email, name;

6. REPACK 命令

REPACK 是 VACUUM FULL 和 CLUSTER 的统一替代方案,而且支持在线操作。这意味着你可以在不阻塞读写的情况下对表进行重组。

REPACK TABLE orders CONCURRENTLY;

7. 分区合并与拆分

分区表运维终于变灵活了。之前要合并或拆分分区,往往需要 DROP 重建,现在一条 ALTER TABLE 就能完成。

ALTER TABLE orders MERGE PARTITIONS (orders_2025_q1, orders_2025_q2) INTO orders_2025_h1;
ALTER TABLE orders SPLIT PARTITION orders_2025_h1 INTO ( … );

8. COPY 增强

COPY 命令迎来了多项增强:支持导出 JSON 格式、导入时跳过多个表头行、无效值自动置为 NULL。

COPY (SELECT id, name, email FROM users LIMIT 3) TO '/tmp/users.json' (FORMAT json, FORCE_ARRAY);
COPY sensor_data FROM '/tmp/sensor.csv' WITH (FORMAT csv, HEADER 3);
COPY products (id, name, price) FROM '/tmp/products.csv' WITH (FORMAT csv, HEADER, ON_ERROR set_null);

二、性能与优化器:更快、更智能

1. JIT 默认禁用

这是一个值得注意的变化。PG19 中 JIT 从默认开启改为默认关闭。对于 OLTP 场景来说这是好消息,因为 JIT 的编译开销往往是负担;对于分析型查询,可以手动开启。

SET jit = on;
SET jit_above_cost = 100000;

2. Anti-Join 优化

NOT IN 和 NOT EXISTS 这类反连接查询在 PG19 中得到了专门的优化,优化器能自动识别并使用 hash anti join,性能提升明显。

EXPLAIN ANALYZE SELECT u.id, u.name FROM users u WHERE u.id NOT IN (SELECT user_id FROM orders);

3. 并行 Autovacuum

大表的 autovacuum 可以并行执行了。通过设置 autovacuum_max_parallel_workers 和表级的 autovacuum_vacuum_parallel_workers,可以显著加快大表的清理速度。

ALTER SYSTEM SET autovacuum_max_parallel_workers = 4;
ALTER TABLE huge_orders SET (autovacuum_vacuum_parallel_workers = 4);

4. SIMD 加速 COPY

在支持 A VX2/A VX-512 的 CPU 上,COPY 使用 SIMD 指令解析文本和 CSV,导入速度显著提升。

5. LZ4 成为默认 TOAST 压缩算法

PG19 开始,default_toast_compression 的默认值从 pglz 改为 lz4。LZ4 在压缩速度和压缩比之间取得了更好的平衡,新建表会自动使用。

SHOW default_toast_compression; -- 输出:lz4

6. 其他性能改进

  • 基数排序(Radix Sort):整数排序自动使用,排序效率更高。
  • TID Range Scan 并行化:可以并行扫描物理位置范围。
  • 异步 I/O 预读:通过 io_min_workers 和 io_max_workers 控制。
  • 外键检查性能提升:大量外键约束的 DML 场景自动受益。

三、逻辑复制与高可用

1. 序列同步

逻辑复制最大的痛点之一终于解决了——序列值可以在订阅端同步,主键冲突的问题得到根治。

ALTER SUBSCRIPTION sub_all REFRESH SEQUENCES;

2. 发布排除表

创建发布时,可以指定排除某些表,比如审计日志、临时表等。

CREATE PUBLICATION pub_main FOR ALL TABLES EXCEPT (audit_log, temp_cache, session_data);

3. Standby 等待 LSN

应用写入主库后,可以通过 pg_wal_wait_for_lsn 函数在备库等待该 LSN 已回放,这对读写分离架构的强一致性场景至关重要。

SELECT pg_wal_wait_for_lsn('0/1A2B3C4D', 'replay', 5000);

4. 其他复制改进

冲突信息保留、死元组保留限制、WAL sender 关闭超时、按订阅设置不同的 WAL receiver 超时——每一处改进都在让逻辑复制更健壮。

四、监控、统计与可观测性

PG19 在运维可观测性上下足了功夫。pg_stat_lock 可以查看锁的获取次数和等待时间;pg_stat_recovery 可以查看备库恢复进度;autovacuum 引入了评分系统,可以精细控制不同表的清理优先级;EXPLAIN (ANALYZE, IO) 能看到 I/O 相关细节;进程级日志级别允许为 autovacuum 单独设置 DEBUG 级别。

五、安全与认证

1. 移除 RADIUS 认证

RADIUS 认证在 PG19 中已被移除,建议迁移到 LDAP 或 SCRAM-SHA-256。

2. MD5 密码警告

使用 MD5 密码登录时会收到弃用警告,建议尽快迁移到 SCRAM-SHA-256。

3. 在线数据校验和

这是不少 DBA 期待已久的功能。以前启用数据校验和必须停机运行 pg_checksums,现在可以直接在线启用。

ALTER DATABASE mydb SET data_checksums = on;

4. OAuth 增强

libpq 支持在连接字符串中指定 OAuth token 和 CA 证书,这为云原生环境的安全接入提供了更便利的方式。

5. 对象名称安全检查

PG19 会自动拦截包含换行符的对象名称,从根本上杜绝了注入风险。

六、数据类型与函数

新增了 OID8 类型支持超大 OID;jsonpath 支持字符串方法(trim、lower、split_part、replace);bytea 与 uuid 之间可以互相转换;random(min, max) 支持时间类型;新增 base64url 和 base32hex 编码;新增 DDL 生成函数(pg_get_role_ddl、pg_get_tablespace_ddl、pg_get_database_ddl);全文搜索新增波兰语和世界语词干提取。

七、升级须知:Breaking Changes

升级前务必关注以下不兼容变更:JIT 默认关闭、max_locks_per_transaction 默认值翻倍、inet/cidr 索引 opclass 变更、standard_conforming_strings 强制开启、mule_internal 编码移除、json_array() 行为变更(空结果返回 [] 而非 null)、postgres_fdw 只读事务传递、C 语言标准升级至 C11。

八、其他亮点

pg_dumpall 支持非文本格式(custom、directory、tar);pg_upgrade 对大对象的迁移进行了优化;支持 Unicode 17.0.0;新增 pg_plan_advice 模块,可以为特定查询模式强制使用索引扫描。

总结

PostgreSQL 19 是一次全面而深入的版本更新。SQL/PGQ 图查询让 PG 成为“关系型+图”双引擎;SIMD 加速、并行 Autovacuum、LZ4 默认压缩带来全方位性能提升;逻辑复制增强(序列同步、排除表、冲突保留)让分布式场景更可靠;在线数据校验和、OAuth 增强、MD5 警告持续加固安全基线;pg_stat_lock、IO 报告、进程级日志让运维可观测性再上新台阶。

目前 PG19 处于 Beta1 阶段,预计将于 2026 年 9-10 月正式发布。

来源:https://cloud.tencent.com.cn/developer/article/2684318
上一篇AI自动生成PPT如何提升演示效率与办公效率 下一篇企业AI应用为何个人效率高公司却停滞
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Kimi App手机电脑联动下载安装及浏览器兼容教程
AI教程 · 2026-06-09

Kimi App手机电脑联动下载安装及浏览器兼容教程

本文介绍了Kimi智能助手从手机端到电脑端的下载与安装方法,重点阐述了不同平台(包括iOS、Android、Windows、macOS)的获取途径。同时,详细说明了如何通过浏览器直接访问网页版,并针对主流浏览器的兼容性进行了分析,旨在帮助用户根据自身设备选择最便捷、稳定的使用方式。

HeyGen稳定安装步骤:先配置创意团队环境再注册开通
AI教程 · 2026-06-09

HeyGen稳定安装步骤:先配置创意团队环境再注册开通

HeyGen的稳定安装与高效使用,关键在于前期团队环境的统一规划与后期账号流程的顺畅完成。团队需明确设计规范、素材管理及权限分工,为工具运行打下基础。随后,通过官方渠道完成注册、验证及订阅开通,确保服务稳定。最后进行基础功能测试与团队培训,即可快速投入实际创作流程。

Mochi 1从零搭建本地服务与工作流导入指南
AI教程 · 2026-06-09

Mochi 1从零搭建本地服务与工作流导入指南

本文介绍了在成功完成Mochi1本地服务的基础搭建后,如何继续处理工作流导入这一关键后续步骤。内容涵盖工作流文件准备、导入操作的具体流程、常见问题的排查与解决,以及导入后的配置优化与测试验证,旨在帮助用户将预设的自动化流程顺利集成到本地环境中,确保工具发挥完整效能。

InvokeAI Linux用户安装配置与节点处理指南
AI教程 · 2026-06-09

InvokeAI Linux用户安装配置与节点处理指南

本文详细介绍了在Linux系统上安装和配置InvokeAI的完整流程。内容涵盖从环境准备、依赖安装到模型下载与加载的关键步骤,并重点解析了核心组件“处理节点”的安装与使用方法。指南旨在帮助用户顺利完成部署,并理解其工作流程,以便更好地利用这一AI图像生成工具进行创作。

Dify保姆级部署指南:服务安装与模型接入下载
AI教程 · 2026-06-09

Dify保姆级部署指南:服务安装与模型接入下载

本文详细介绍了开源AI应用开发平台Dify的部署流程。内容涵盖从服务器环境准备、Docker安装、Dify核心服务启动,到如何接入OpenAI、Azure等云端大模型API,以及如何配置Ollama等本地模型。最后,还提供了使用ModelScope社区下载特定模型文件并集成到本地环境中的具体操作方法,旨在帮助用户快速搭建属于自己的AI应用开发与测试平台。