当前位置: 首页 > article >正文

【PGCCC】Postgres 17 中的 3 大特性

一年又一年,Postgres 已成为世界上最受喜爱和最受信任的数据库 — Postgres 17将变得更好。即将发布的版本在开发人员体验和性能方面都有所改进。
在这里插入图片描述

Postgres 17 中的 3 大特性

#01
具有 RETURNING 支持的 MERGE 命令

它可以帮助需要处理条件数据修改而无需处理多个查询的应用程序开发人员。

Postgres 17在 Postgres 15 中引入的MERGE命令的基础上更进一步,增加了对该子句的支持。这一改进允许开发人员在单个步骤中检索并返回由该操作修改的行,从而减少了对额外查询的需求并简化了复杂的工作流程。您将能够编写更简洁、更高效的 SQL,尤其是在涉及条件插入、更新或删除的场景中。RETURNING MERGE

例子:

CREATE TABLE hero (
    id SERIAL PRIMARY KEY,
    first_name text,
    last_name text,
    hero_name text UNIQUE
);

-- Insert new hero or update existing one based on hero_name
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 THEN
  UPDATE SET first_name = v.first_name, last_name = v.last_name
WHEN NOT MATCHED THEN
  INSERT (first_name, last_name, hero_name)
  VALUES (v.first_name, v.last_name, v.hero_name)
RETURNING merge_action(), *;

-- returns:
-- merge_action | id | first_name | last_name | hero_name
-- -------------|----|------------|-----------|-----------
-- UPDATE       | 1  | Wade       | Wilson    | Deadpool

如果匹配,此代码会更新现有英雄的名字和姓氏hero_name,如果未找到匹配项,则插入新英雄。该RETURNING子句将返回操作结果以及英雄的数据,从而更轻松地一步处理修改后的行。

#02
增强的 JSON 函数

它满足了在 Postgres 中管理半结构化数据的日益增长的需求,并提供了更直接的方法来处理 JSON。

Postgres 17 改进了搜索、提取和操作 JSON 数据的方式,增加了对新 JSON 路径函数的支持,例如JSON_TABLE。此函数允许您将 JSON 数据直接转换为关系表格式,从而更容易在 JSON 数据上使用 SQL 查询,而无需先手动解压或转换它:

SELECT *
FROM json_table(
  '[
     {"product": "Laptop", "details": {"price": 1200, "stock": 25}},
     {"product": "Smartphone", "details": {"price": 800, "stock": 50}},
     {"product": "Tablet", "details": {"price": 500, "stock": 40}}
   ]',
  '$[*]'
  COLUMNS (
    product_name TEXT PATH '$.product',
    price INT PATH '$.details.price',
    stock INT PATH '$.details.stock'
  )
) AS jt;


 product_name | price | stock
--------------|-------|-------
 Laptop       | 1200  | 25
 Smartphone   | 800   | 50
 Tablet       | 500   | 40

#03
提高性能

谁不喜欢更快的查询?很高兴看到 Postgres 解决了它的一些弱点,比如真空操作。

此版本引入了多项改进,可提高查询性能和操作效率,包括改进并行查询处理、vacuum 过程和 B-tree 索引性能。Vacuum 现在采用新的内部数据结构,可将内存使用量减少多达 1/20,并通过取消之前的 1GB 内存上限来实现更大的灵活性。此外,通过优化 IN 子句的处理,B-tree 索引性能得到提升,从而可以更快地执行涉及大量值列表的操作的查询。
#PG证书#PG考试#postgresql初级#postgresql中级#postgresql高级


http://www.kler.cn/a/300235.html

相关文章:

  • 项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库
  • 可视化-numpy实现线性回归和梯度下降法
  • 迅为龙芯2K1000开发板/核心板流畅运行Busybox、Buildroot、Loognix、QT5.12系统
  • 豆包升级了“眼睛”,看APP截图就能写代码了!超低价让多模态AI普惠
  • 日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
  • 【C++】C++11
  • 经验笔记:在 TypeScript 中使用回调函数
  • opencv彩色图像转灰度图原理
  • Linux和C语言(Day11)
  • 探索Python的数学魔法:Numpy库的神秘力量
  • linux从0到1 基础完整知识
  • 用Python爬虫制作一个简易翻译器
  • QT cmake vscode 构建流程
  • 空间数据库概述
  • 【Android】GreenDao数据库的使用方式
  • 三菱机器人手柄维修示教器维修手操器面板等
  • Centos7.9部署Gitlab-ce-16.9
  • python列表判断是否为空的三种方式
  • 数据结构(邓俊辉)学习笔记】排序 5——选取:通用算法
  • JavaScript语言基础知识
  • fastjson漏洞--以运维角度进行修复
  • kafka单机安装
  • linux运维常见命令行
  • vulhub spring 远程命令执行漏洞(CVE-2016-4977)
  • 当 PLC 遇见 “IT”
  • R语言数据整理和分析(1)