PostgreSQL 17即将发布,新功能Top 3

2024-09-07 13:52

本文主要是介绍PostgreSQL 17即将发布,新功能Top 3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

按照计划,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 |       40

PostgreSQL 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

这篇关于PostgreSQL 17即将发布,新功能Top 3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145245

相关文章

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has