天坛网站建设,安徽城乡建设厅网站,做行业网站如何采集信息,电商网站开发教程按照计划#xff0c;PostgreSQL 17 即将在 2024 年 9 月 26 日发布#xff0c;目前已经发布了第一个 RC 版本#xff0c;新版本的功能增强可以参考 Release Notes。
本文给大家分享其中 3 个重大的新增功能。
MERGE 语句增强
MERGE 语句是 PostgreSQL 15 增加的一个新功能…按照计划PostgreSQL 17 即将在 2024 年 9 月 26 日发布目前已经发布了第一个 RC 版本新版本的功能增强可以参考 Release Notes。
本文给大家分享其中 3 个重大的新增功能。
MERGE 语句增强
MERGE 语句是 PostgreSQL 15 增加的一个新功能它可以在单个语句中实现 INSERT、UPDATE 以及 DELETE 操作非常适合数据仓库中的 ETL 流程。
PostgreSQL 17 进一步增强了 MERGE 语句的功能首先就是它支持 RETURNING 子句可以返回新增、更新或者删除的数据行。例如
CREATE TABLE hero (id SERIAL PRIMARY KEY,first_name text,last_name text,hero_name text UNIQUE
);-- 插入或者更新数据
MERGE INTO hero h
USING (VALUES (Wade, Wilson, Deadpool)) v(first_name, last_name, hero_name)
ON h.hero_name v.hero_name
WHEN MATCHED THENUPDATE SET first_name v.first_name, last_name v.last_name
WHEN NOT MATCHED THENINSERT (first_name, last_name, hero_name)VALUES (v.first_name, v.last_name, v.hero_name)
RETURNING merge_action(), *;merge_action|first_name|last_name|hero_name|id|first_name|last_name|hero_name|
----------------------------------------------------------------------
INSERT |Wade |Wilson |Deadpool | 1|Wade |Wilson |Deadpool |第一次执行语句时返回了插入的数据其中 merge_action() 函数用于返回 MERGE 操作类型返回值包括 INSERT、UPDATE 以及 DELETE。
MERGE 语句另一个增强是一个新的操作选项WHEN NOT MATCHED BY SOURCE。该选项可以针对目标表中存在、但是源表中不存在的数据行进行操作允许的操作包括 UPDATE、DELETE 或者 DO NOTHING。
MERGE INTO hero h
USING (VALUES (Wade, Wilson, Deadpool)) v(first_name, last_name, hero_name)
ON h.hero_name v.hero_name
WHEN MATCHED THENUPDATE SET first_name v.first_name, last_name v.last_name
WHEN NOT MATCHED THENINSERT (first_name, last_name, hero_name)VALUES (v.first_name, v.last_name, v.hero_name)
WHEN NOT MATCHED BY SOURCE THENDELETE;JSON 函数
PostgreSQL 对于 JSON 数据类型和函数的支持比很多数据库都早PostgreSQL 17 继续实现 SQL/JSON 标准增加了 JSON_TABLE 函数可以将 JSON 数据转换为 PostgreSQL 二维表。例如
select * from json_table([{a:10,b:20},{a:30,b:40}]::jsonb,$[*]COLUMNS (column_a int4 path $.a,column_b int4 path $.b)
);column_a | column_b
--------------------10 | 2030 | 40PostgreSQL 17 还增加了 SQL/JSON 构造函数JSON、JSON_SCALAR、JSON_SERIALIZE以及查询函数JSON_EXISTS、JSON_QUERY、JSON_VALUE。同时还为 jsonpath 实现增加了更多功能以及将 JSON 数据转换为其他类型的功能
性能改进
PostgreSQL 17 在查询性能以及维护效率方面提供了许多改进包括并行查询VACUMM 进程B-树索引维护等。
PostgreSQL 17 支持 pg_basebackup 增量备份同时引入了一个新的工具 pg_combinebackup用于还原备份时合并多个备份。
除了以上内容PostgreSQL 17 还增加了大量的新功能和改进完整的新特性列表可以参考官方的发行说明。
https://www.postgresql.org/docs/17/release-17.html