PostgreSQL 18 RETURNING 增强:现代应用的重要进展

PostgreSQL中使用RETURNING子句来返回被影响行的数据 PostgreSQL中当你执行一个 `UPDATE` 或 `DELETE` 操作时,通常希望获取被修改或删除行的数据。为此PostgreSQL 提供了一个强大的特性,即使用 `RETURNING` 子句来返回被影响行的数据。 阅读详情

PostgreSQL 18 正式发布,带来了多项重要改进,其中 RETURNING 子句的增强尤为突出。该特性在 MERGE RETURNING 场景下实现了关键突破,可显著简化应用架构,并提升数据变更追踪能力。

RETURNING 子句的演进

RETURNING 子句长期以来用于在 INSERT、UPDATE、DELETE 操作后返回受影响行的数据,从而避免额外的 SELECT 查询,减少数据库往返次数并提升性能。然而,在 PostgreSQL 18 之前,该子句在功能上存在明显限制,迫使开发实践中采用各种折中方案。

在 PostgreSQL 17 中,首次为 MERGE 语句引入 RETURNING 支持(提交 c649fa24a),这是一次重要进展。MERGE 语句自 PostgreSQL 15 引入,用于在单条语句中完成条件化的 INSERT、UPDATE 或 DELETE 操作,但在缺乏 RETURNING 支持的情况下,无法直观获取实际执行结果。

PostgreSQL 18 的新特性

PostgreSQL 18 通过引入 OLD 与 NEW 别名(提交 80feb727c8,由 Dean Rasheed 提交,Jian He 与 Jeff Davis 评审),将 RETURNING 子句能力提升至新的层级。该增强使 DML 操作期间的数据捕获方式发生了根本性变化。

PostgreSQL 18 之前的限制

在早期版本中,RETURNING 子句在不同语句类型下存在以下差异化限制:

  • INSERT 与 UPDATE 仅能返回新值或当前值
  • DELETE 仅能返回旧值
  • MERGE 根据内部实际执行的操作类型(INSERT、UPDATE 或 DELETE)返回结果

在需要对比更新前后数据、或精确追踪字段变化时,可选方案较为有限,包括:

  • 在修改前额外执行 SELECT 查询
  • 编写复杂的触发器函数
  • 在应用层实现变更跟踪逻辑
  • 通过系统列(如 xmax)进行间接判断

上述方式普遍增加了实现复杂度与访问延迟,并降低了代码可维护性。

解决方案:OLD 与 NEW 别名

PostgreSQL 18 引入了特殊别名 old 与 new,可在单条语句中同时访问数据的修改前状态与修改后状态。该机制适用于 INSERT、UPDATE、DELETE 以及 MERGE 等全部 DML 操作。

基本语法示例如下:

UPDATE table_name
SET column = new_value
WHERE condition
RETURNING old.column AS old_value, new.column AS new_value;

为避免与现有列名冲突,或在触发器环境中使用,可对别名进行重命名:

UPDATE accounts
SET balance = balance - 50
WHERE account_id = 123
RETURNING WITH (OLD AS previous, NEW AS current)
    previous.balance AS old_balance,
    current.balance AS new_balance;

MERGE + RETURNING:能力整合

在 PostgreSQL 18 中,MERGE 与 RETURNING 的组合为 Upsert 场景提供了完整能力,可在单条原子操作中同时完成数据写入与变更结果获取。

实践示例:产品库存系统

在产品库存管理场景中,需要从外部数据源同步数据,实现新增产品、更新已有产品,并准确记录每一行的处理结果。

步骤 1:创建数据表

CREATE TABLE products (
    product_id SERIAL PRIMARY KEY,
    product_code VARCHAR(50) UNIQUE NOT NULL,
    product_name VARCHAR(200) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INTEGER NOT NULL DEFAULT 0,
    last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE product_staging (
    product_code VARCHAR(50),
    product_name VARCHAR(200),
    price DECIMAL(10, 2),
    stock_quantity INTEGER
);

步骤 2:插入初始数据

INSERT INTO products (product_code, product_name, price, stock_quantity)
VALUES
    ('LAPTOP-001', 'Premium Laptop', 999.99, 50),
    ('MOUSE-001', 'Wireless Mouse', 29.99, 200),
    ('KEYBOARD-001', 'Mechanical Keyboard', 79.99, 150);

INSERT INTO product_staging (product_code, product_name, price, stock_quantity)
VALUES
    ('LAPTOP-001', 'Premium Laptop Pro', 1099.99, 45),  -- Update existing
    ('MONITOR-001', '4K Monitor', 399.99, 75),          -- New product
    ('MOUSE-001', 'Wireless Mouse', 29.99, 200);        -- No actual change

基础版:搭配 RETURNING 子句的 MERGE 操作

MERGE INTO products p
USING product_staging s ON p.product_code = s.product_code
WHEN MATCHED THEN
    UPDATE SET
        product_name = s.product_name,
        price = s.price,
        stock_quantity = s.stock_quantity,
        last_updated = CURRENT_TIMESTAMP
WHEN NOT MATCHED THEN
    INSERT (product_code, product_name, price, stock_quantity)
    VALUES (s.product_code, s.product_name, s.price, s.stock_quantity)
RETURNING
    p.product_code,
    p.product_name,
    merge_action() AS action_performed;

返回结果示例:

 product_code  |    product_name     | action_performed
---------------+---------------------+------------------
 LAPTOP-001    | Premium Laptop Pro  | UPDATE
 MONITOR-001   | 4K Monitor          | INSERT
 MOUSE-001     | Wireless Mouse      | UPDATE

进阶版:搭配 OLD 与 NEW 别名的 MERGE 操作

通过 OLD 与 NEW 别名,可同时获取字段的修改前与修改后值,从而实现精细化变更追踪与审计。

以下查询可从受影响行中,同时获取 product_name 与 price 列的修改前旧值和修改后新值。通过为其设置别名(old_name、new_name、old_price、new_price),可便捷对比 MERGE 操作前后的列值变化,为变更追踪与审计日志记录提供支撑。

MERGE INTO products p
USING product_staging s ON p.product_code = s.product_code
WHEN MATCHED THEN
    UPDATE SET
        product_name = s.product_name,
        price = s.price,
        stock_quantity = s.stock_quantity,
        last_updated = CURRENT_TIMESTAMP
WHEN NOT MATCHED THEN
    INSERT (product_code, product_name, price, stock_quantity)
    VALUES (s.product_code, s.product_name, s.price, s.stock_quantity)
RETURNING
    p.product_code,
    merge_action() AS action,
    old.product_name AS old_name,
    new.product_name AS new_name,
    old.price AS old_price,
    new.price AS new_price,
    old.stock_quantity AS old_stock,
    new.stock_quantity AS new_stock,
    (old.price IS DISTINCT FROM new.price) AS price_changed,
    (old.stock_quantity IS DISTINCT FROM new.stock_quantity) AS stock_changed;

INSERT 场景下旧值为 NULL,而 UPDATE 场景下可完整呈现字段变更情况。

 product_code  | action | old_name          | new_name            | old_price | new_price | old_stock | new_stock | price_changed | stock_changed
---------------+--------+-------------------+---------------------+-----------+-----------+-----------+-----------+---------------+--------------
 LAPTOP-001    | UPDATE | Premium Laptop    | Premium Laptop Pro  | 999.99    | 1099.99   | 50        | 45        | t             | t
 MONITOR-001   | INSERT | NULL              | 4K Monitor          | NULL      | 399.99    | NULL      | 75        | NULL          | NULL
 MOUSE-001     | UPDATE | Wireless Mouse    | Wireless Mouse      | 29.99     | 29.99     | 200       | 200       | f             | f

构建审计日志

借助增强后的 RETURNING 子句,可在不使用触发器的前提下构建完整审计链路。

步骤 1:创建审计表

CREATE TABLE product_audit (
    audit_id SERIAL PRIMARY KEY,
    product_code VARCHAR(50),
    action VARCHAR(10),
    old_values JSONB,
    new_values JSONB,
    changes JSONB,
    changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

步骤 2:执行带详细审计追踪的 MERGE 操作

WITH merge_results AS (
    MERGE INTO products p
    USING product_staging s ON p.product_code = s.product_code
    WHEN MATCHED THEN
        UPDATE SET
            product_name = s.product_name,
            price = s.price,
            stock_quantity = s.stock_quantity,
            last_updated = CURRENT_TIMESTAMP
    WHEN NOT MATCHED THEN
        INSERT (product_code, product_name, price, stock_quantity)
        VALUES (s.product_code, s.product_name, s.price, s.stock_quantity)
    RETURNING
        p.product_code,
        merge_action() AS action,
        jsonb_build_object(
            'name', old.product_name,
            'price', old.price,
            'stock', old.stock_quantity
        ) AS old_values,
        jsonb_build_object(
            'name', new.product_name,
            'price', new.price,
            'stock', new.stock_quantity
        ) AS new_values
)
INSERT INTO product_audit (product_code, action, old_values, new_values, changes)
SELECT
    product_code,
    action,
    old_values,
    new_values,
    CASE
        WHEN action = 'INSERT' THEN new_values
        WHEN action = 'DELETE' THEN old_values
        ELSE (
            SELECT jsonb_object_agg(key, value)
            FROM jsonb_each(new_values)
            WHERE value IS DISTINCT FROM old_values->key
        )
    END AS changes
FROM merge_results;

步骤 3:查询审计追踪结果

select * from product_audit;
 audit_id | product_code | action |                          old_values                           |
             new_values                           | changes |         changed_at
----------+--------------+--------+---------------------------------------------------------------+-------------
--------------------------------------------------+---------+----------------------------
        1 | LAPTOP-001   | UPDATE | {"name": "Premium Laptop Pro", "price": 1099.99, "stock": 45} | {"name": "Pr
emium Laptop Pro", "price": 1099.99, "stock": 45} |         | 2025-12-12 16:27:14.760125
        2 | MONITOR-001  | UPDATE | {"name": "4K Monitor", "price": 399.99, "stock": 75}          | {"name": "4K
 Monitor", "price": 399.99, "stock": 75}          |         | 2025-12-12 16:27:14.760125
        3 | MOUSE-001    | UPDATE | {"name": "Wireless Mouse", "price": 29.99, "stock": 200}      | {"name": "Wi
reless Mouse", "price": 29.99, "stock": 200}      |         | 2025-12-12 16:27:14.760125
(3 rows)

示例中通过 CTE 获取 MERGE 结果,并将旧值、新值及差异以 JSONB 形式写入审计表,实现单条原子操作内的数据同步与审计记录生成。

未来展望

PostgreSQL 18 版本的 RETURNING 子句增强特性,是该数据库提升开发友好性、减少复杂替代方案使用的重要举措。单原子操作中同时调用数据新旧值的能力,可简化应用开发中的多种通用实现模式。

该功能在后续版本中或可从以下方向进一步升级:

  1. 扩展 MERGE 语句能力,新增更多 WHEN 子句,实现更复杂的条件操作.
  2. 新增聚合功能支持,支持对 RETURNING 子句的返回结果直接进行聚合计算。
  3. 实现跨表返回,支持在单操作中返回关联表的数据信息。

技术细节与提交记录参考

针对关注技术实现细节的人员,可参考以下信息:

  • MERGE RETURNING(PostgreSQL 17):迪恩・拉希德提交,记录编号 c649fa24a。
  • OLD/NEW Support(PostgreSQL 18):迪恩・拉希德提交,何健与杰夫・戴维斯评审,记录编号 80feb727c8。
  • Discussion Thread:https://postgr.es/m/CAEZATCWx0J0-v=Qjc6gXzR=KtsdvAE7Ow=D=mu50AgOe+pvisQ@mail.gmail.com

该功能的实现涉及多个组件的修改,包括:

  • 执行器(execExpr.c、execExprInterp.c、nodeModifyTable.c)
  • 解析器(parse_target.c)
  • 优化器(createplan.c、setrefs.c、subselect.c)
  • 节点模块(makefuncs.c、nodeFuncs.c)

总结

PostgreSQL 18 对 RETURNING 子句的增强,尤其是 OLD 与 NEW 别名的引入,为 INSERT、UPDATE、DELETE 与 MERGE 操作提供了完整的数据变更可视性。这一能力显著减少了对触发器与额外查询的依赖,使数据同步、变更追踪与审计实现更加简洁、高效且易于维护。

MERGE 与增强型 RETURNING 的结合,为 Upsert 场景提供了前所未有的控制能力与透明度,是 PostgreSQL 在开发友好性与工程实用性方面的重要进展。

原文链接:

https://www.pgedge.com/blog/postgresql-18-returning-enhancements-a-game-changer-for-modern-applications

作者:Ahsan Hadi


HOW 2026 议题招募中

2026 年 4 月 27-28 日,由 IvorySQL 社区联合 PGEU(欧洲 PG 社区)、PGAsia(亚洲 PG 社区)共同打造的 HOW 2026(IvorySQL & PostgreSQL 技术峰会) 将再度落地济南。届时,PostgreSQL 联合创始人 Bruce Momjian 等顶级大师将亲临现场。

自开启征集以来,HOW 2026 筹备组已感受到来自全球 PostgreSQL 爱好者的澎湃热情。为了确保大会议题的深度与广度,我们诚邀您在 2026 年 2 月 27 日截止日期前,提交您的技术见解。

投递链接:https://jsj.top/f/uebqBc

PostgerSQL使用问答04 - Returning Retuning子句是PostreSQL提供的一个SQL语句和特性。它可以用于在DML语句中,返回修改后的数据行。这个特性在Web应用开发中可能会非常有用,它可以极大的简化代码和操作。例如,对于一个拥有自增字段的表,插入一条记录,插入后想要获取这条记录包括自增ID的话,传统的开发模式,可能需要进行额外的操作,例如使用插入数据进行查询或者类似MySQL中,LAST_INSERT_ID()这种方法。都需要执行多次查询,显得比较繁琐。 阅读详情

相关推荐

PostgreSQL 18发布:令人兴奋的5大新特性

PostgreSQL 18版本正式发布,带来多项突破性升级。性能方面引入异步I/O框架,云存储场景下读取性能提升2-3倍;索引革命性突破"最左前缀匹配"限制,支持跳跃式扫描。开发效率显著提升,包括直接获取新旧值的RETURNING语法、原生UUIDv7支持和默认启用的虚拟生成列。运维安全方面新增精准VACUUM、OAuth 2.0认证支持等特性。该版本由200多位贡献者提交3000次代码完成,标志着PostgreSQL在性能、开发体验和安全性上的全面进步。

少安事务所 1708

postgresql中的returning

返回修改行,插入行,删除行的数据. ‘returning *’意思是返回你操作的全部数据,也可以是你刚才修改,插入,删除数据的一部分,例如:returning id ,returning name…之类。 举例子: update: insert: delete: ...

Explore 1928

PostgreSQL 18 新特性解析(附一键安装脚本)

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

huanhuanzhou blog 1564

PostgreSQL 使用RETURNING返回值

PostgreSQL 使用RETURNING返回值

luojinbai的专栏 2万+

PostgreSQL 18 新功能:虚拟生成列

PostgreSQL 18将引入虚拟生成列功能,这是继存储生成列后的又一重要特性。虚拟生成列在查询时动态计算,不占用存储空间,适用于轻量级表达式;而存储生成列则持久化在磁盘上,可被索引。该功能借鉴了Excel的反应式编程思想,通过定义源列和派生列的关系,简化数据库维护工作。实际应用中,虚拟生成列可用于多语言全文搜索等场景,通过不同文本配置生成多个tsvector列并分别建立索引,提升查询效率。这一特性将SQL从命令式编程转向更具声明性的风格,减少重复代码,使数据库设计更加简洁高效。

xuejianxinokok的专栏 939

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。分别对LANDSAT 5/7/8系列数据计算FVC,其中Landsat5 和Landsat 7NDVI计算利用 B4和B3波段,Landsat8 和Landsat9 NDVI计算利用 B5和B4波段。算法从当年所有观测数据中,以低云、低探测角度和最高NDVI值为标准,选择最佳的可用像元值,并进行换算。(3) FVC的计算。

地球资源数据云的官方博客 1809

oracle insert into returning,oracle returning into用法

CREATE TABLE t1 (id NUMBER(10),description VARCHAR2(50),CONSTRAINT t1_pk PRIMARY KEY (id));CREATE SEQUENCE t1_seq;INSERT INTO t1 VALUES (t1_seq.nextval, 'ONE');INSERT INTO t1 VALUES (t1_seq.nextval, '...

weixin_39629129的博客 1536

树莓派与无人机协同实战:基于OpenCV的地标识别优化策略

本文深入探讨了基于树莓派与无人机的协同系统,重点分享了利用OpenCV优化地标识别以实现精准降落的实战策略。内容涵盖从应对复杂光照的图像预处理、鲁棒的轮廓几何过滤,到通过ROS进行稳定通信,以及实现分层控制与状态机设计,旨在提升系统在真实环境中的可靠性与性能。

y2z3a4b5c的博客 1087

PostgreSQL 18新特性之DML语句RETURNING增强

PostgreSQL 18 支持在 INSERT、UPDATE、DELETE、MERGE 语句的 RETURNING 子句中使用特殊的别名 old 以及 new 返回被修改后或者修改前的数据。

Tony.Dong的专栏 1094

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

u012831187的博客 1万+

Camera AF和FF

Camera按对焦功能可以分为FF(Fixed Focus)和AF(Auto Focus),即固定对焦和自动对焦。固定对焦顾名思义就是焦距是固定的,而自动对焦可以通过移动镜头位置来改变焦距从而实现自动对焦。以前摄像的功能机大多是固定对焦,现在的手机都带有自动对焦功能。 FF模组包括镜头(Lens),传感器(Sensor),红外滤色器(IR Filter),电路板(PCB),镜头支撑(Lens Holder),连接器(Connector)。 Fig 1. FF Module AF模组包括FF模组,音圈马达(V

Coppa的博客 1万+

是时候从 MySQL 转到 PostgreSQL 18 了

随着PostgreSQL18 的发布,其在性能、开发者能力和分布式特性上又有显著提升。在 AI 时代,PostgreSQL凭借 pgVector 等扩展,已成为事实上的标准数据库选择。简而言之,它相对MySQL性能优势:面对海量数据具备更好的性能和更多的优化手段。可扩展性:丰富的索引类型、强大的分区表和扩展生态系统,满足各种业务场景。开发效率:更丰富的数据类型、完善的 JSONB 支持、增强的RETURNING子句、全面的 CTE 支持,大幅提升开发效率。

jgaskjxghkaj的博客 611

等保测评-达梦数据库

一般适用于等保测评

m0_54146694的博客 1300

PostgreSQL 18 已发布:一文读懂核心变化

PostgreSQL 18是一次非常扎实的更新,它没有追求华而不实的功能,而是聚焦于性能、可用性和安全性这些核心领域。异步I/O、平滑的升级体验和UUIDv7等特性,将直接为开发者和运维团队带来巨大的价值。对于想要第一时间体验这些强大功能的开发者来说,选择一个好的本地开发环境非常关键。ServBay 率先支持PostgreSQL 18,通过它的一键安装功能,可以轻松搭建最新版本的开发环境,为项目迁移和升级做好充分准备。

Sammyyyyy的博客 1021

环境配置与基础教程:多机多卡分布式训练实战:基于 SLURM 集群调度 YOLOv11,大幅缩短训练周期

摘要: 本文详细介绍了YOLOv11分布式训练在SLURM集群中的完整实现方案。针对单卡训练效率低、环境配置复杂等问题,提出基于多机多卡的分布式优化路径,涵盖硬件选型、RDMA网络配置、PyTorch环境搭建及容器化部署方案。重点解析了YOLOv11的架构演进与核心模块(如C3k2动态卷积),并对比了与YOLOv8的性能差异。通过SLURM调度系统与NFS共享存储,实现训练任务的高效资源分配和数据同步。文中所有配置均基于Ultralytics最新版本验证,为大规模目标检测任务提供了一套可复现的工程实践框架。

ZXSXJ的博客 55

Zemax与Matlab交互:双胶合优化详细流程

Zemax与Matlab交互:双胶合优化详细流程

weixin_72050316的博客 630

PostgreSQL 18.0 正式发布!

PostgreSQL 18带来四大核心升级:1)性能方面引入异步I/O和Skip Scan索引技术,实现I/O瓶颈突破和多列索引优化;2)运维层面改进升级工具并新增时态约束,支持统计信息无损迁移和时间维度数据完整性;3)开发功能增强包括有序UUID生成、虚拟生成列和变更追踪优化;4)安全认证新增OAuth 2.0支持。该版本聚焦性能提升、简化运维和开发提效,在保持SQL标准兼容性的同时提供平滑升级路径。

pger 的博客 1305

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1105

PostgreSQL 18 全面解析:200+新特性开启数据库新纪元

🚀 一、大规模数据处理:性能与效率的双重突破 🔹 虚拟列:智能计算,存储零负担 概念图示: 技术优势:应用场景:优化对比: 使用场景: 核心价值:迁移流程示意图: 关键特性:认证演进: OAUTHBearer/SASL优势:功能对比: 应用价值:UUID版本对比: 技术优势: 架构价值: ⚠️ 六、重要变更:升级必读指南 🔴 安全警告:MD5密码正式弃用 迁移建议:初始化变更: 编译选项清理: 📈 七、升级策略与建议 升级前检查清单 兼容性验证性能评估回滚准备 🎯 总结:Postgre

IT技术学习与工作笔记分享 1220

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

PostgreSQL v18发布,新增AIO uuidv7 OAuth等功能

PostgreSQL 18.0带来多项重要更新:引入异步I/O(AIO)子系统提升读写性能;pg_upgrade优化器统计信息迁移减少升级后性能波动;新增B-tree skip scan提升多列索引效率;内置uuidv7()函数生成时间有序UUID;默认使用VIRTUAL生成的列节省存储空间;DML的RETURNING支持old/new返回变更前后数据;新增OAuth认证方式对接企业票据体系。这些改进从内核到体验全面提升PostgreSQL性能与功能,但升级时需注意AIO配置、统计信息补齐等潜在问题。

前端之虎陈随易 911

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【PGCCC】PostgreSQL 18 Beta 1发布,有哪些亮点?

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

PGCCC的博客 1173

PostgreSQL 18 发布详解与技术解读

PostgreSQL 起源于加州大学伯克利分校的 POSTGRES 项目。自 1996 年更名为 PostgreSQL 后,持续迭代,逐步成为全球最主流的开源数据库之一。每年发布一个主版本,社区活跃,贡献者众多。近年,随着云原生、分布式和数据安全需求提升,PostgreSQL 在性能、扩展性、易用性等方面不断进步。PostgreSQL 官方文档PostgreSQL 18 的每项升级都围绕性能、安全、易用性进行。异步 I/O 和 NUMA 支持让数据库在多核和大数据场景下更高效;

IT技术学习与工作笔记分享 1777

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

PostgreSQL 全球开发组于2025年5月8日发布了PostgreSQL 18的首个Beta版本,标志着该数据库系统即将迎来一系列重大更新。

Tony.Dong的专栏 1794

PostgreSQL 18 正式发布,六大亮点特性!

生成带时间戳前缀的 UUID,解决 UUIDv4 无序导致的索引分裂问题,B-tree 索引写入性能提升 40%。:实测显示,读取密集型查询性能提升 2-3 倍,尤其适合云存储和 TB 级大表维护场景。:默认从“存储型”改为“虚拟型”,值在读取时实时计算,不占用存储空间。再见 Ingress!

民工哥的博客 815

PostgreSQL 18 新功能与兼容性变化详解

虚拟列允许在表结构中定义不实际存储数据的列,通常用于表达式计算或视图优化。例如,可以定义虚拟列为,无需实际存储,查询时动态计算。降低存储成本简化业务逻辑提升报表查询灵活性PostgreSQL 18 的升级不仅带来了丰富的新功能,还对兼容性做了重要调整。开发者和运维人员应充分学习变更内容,合理规避风险,发挥新版本的最大价值。希望本文的详解能帮助大家“知其然,更知其所以然”,在实际工作中高效应用 PostgreSQL 18 的新特性。PostgreSQL 官方文档。

IT技术学习与工作笔记分享 1458

PostgreSQL 18 从新手到大师:实战指南 - 3.1 PostgreSQL 18新特性深度剖析

PostgreSQL 18是2025年发布的最新稳定版本,带来了多项重大改进。在性能方面,它增强了并行查询功能,支持更多查询类型并行执行,并优化了执行机制,测试显示性能提升6-7倍。该版本首次原生支持向量数据库功能,新增vector数据类型、HNSW和IVFFlat索引,以及丰富的向量操作函数,为AI和机器学习应用提供强大支持。此外,PostgreSQL 18还改进了查询优化器、分区表功能,增强了安全特性(如透明数据加密)和易用性。这些改进使PostgreSQL 18能够更好地满足现代应用对性能、安全性和扩

AI 题库 —— 软件编程老兵专属分享阵地,聚焦青少年编程等级考、Python/C++ 信息学奥赛、机器人技术等级考试备考干货,依托智能题库资源,用 5 年一线教学经验助力编程学习高效备考! 855
上一篇: IndexScan比SeqScan返回的结果更少,索引损坏?
下一篇: 执行计划跑偏,你了解背后的根因吗?
IvorySQL
博客等级 码龄5年 745粉丝 566原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值