PostgreSQL 17 Beta1 发布,酷克数据再次贡献核心力量

得益于全球的开发者贡献,PostgreSQL已成长为一款拥有众多全球用户和贡献者、成熟稳定的开源数据库。2024年5月23日,PostgreSQL全球开发组宣布,PostgreSQL 17的首个 Beta 版本现已开放下载。本次新版本带来了众多惊喜。值得一提的是,本次发布中,酷克数据HashData研发团队参与了多出核心代码贡献,为PostgreSQL项目与社区提供了有力支持。

PostgreSQL 17功能亮点

查询和写入性能优化

PostgreSQL 17(以下称“PG17”)致力于优化和提升整体的系统性能。负责回收存储空间Vacuum进程采用了新数据结构,使得垃圾回收过程的内存使用减少,最高可以减少 20 倍,并缩短执行时间。 Vacuum 进程不再受1GB内存限制,由 maintenance_work_mem 来控制。引入流式I/O接口,提升了顺序扫描和运行 ANALYZE 的性能。新增配置参数,可控制事务、子事务和multixact缓冲区大小。PG17利用Planner统计信息和CTE(即 WITH 查询)结果中的排序顺序,进一步优化查询速度。对于包含IN子句和B-tree索引的查询,执行时间得到显著缩短。对于带有NOT NULL约束的列,PostgreSQL能够自动优化冗余的IS NOT NULL语句,同样,对于IS NULL的查询也进行了优化。此外,支持并行构建BRIN索引。在高并发写入场景下,PG17通过改进预写日志(WAL)锁管理,实现了高达两倍的性能提升。最后,新版本还引入了更多显式的SIMD指令,如AVX-512,为bit_count等函数提供了硬件加速支持。

分区和分布式工作负载增强

PG17的分区管理更为灵活,支持拆分与合并分区,并允许分区表使用身份列(Identity Column) 和排它约束(Exclude Constraints)。同时,postgres_fdw支持将EXISTS和IN子查询下推至远端服务器提升性能。PG17为逻辑复制添加了新功能,简化了高可用架构和升级流程。PG17使用 pg_upgrade升级到更高版本时,无需删除复制槽。支持Failover控制,为高可用性架构中管理 PostgreSQL 提供了更好的可控制性。PG17还允许逻辑复制的订阅者使用 hash 索引进行查找,并引入了 pg_createsubscriber 命令行工具,用于在使用物理复制的副本从库上创建逻辑复制。

开发者体验

PG17深化了 SQL/JSON 支持,新增了 JSON_TABLE 功能,支持将JSON 转换为标准 PostgreSQL 表,以及 SQL/JSON 构造函数(JSON、JSON_SCALAR、JSON_SERIALIZE)和查询函数(JSON_EXISTS、JSON_QUERY、JSON_VALUE)。此外,PG17为 jsonpath 的实现增添了更多功能,包括将 JSON 值转换为各种不同特定数据类型。MERGE 命令现支持 RETURNING 子句,便于处理修改后的行。merge_action 函数可识别 MERGE 命令的修改部分。PG17还允许使用 MERGE 命令更新视图,并新增 WHEN NOT MATCHED BY SOURCE 子句,以指定当源行无匹配时提供操作。COPY用于从PostgreSQL高效批量加载和导出数据,在PG17中,导出大行时的性能最多有两倍的提升。当源与目标编码匹配时,COPY性能亦有所提升。COPY新增 ON_ERROR 选项,允许在插入错误时继续执行。PG17还支持使用 libpq API 使用异步和更为安全的查询取消方法。PG17引入内置的排序规则提供程序,该提供程序提供与 C 排序规则类似的排序语义,但编码为 UTF-8 而非 SQL_ASCII,提供不变性保证,确保排序结果跨系统一致。

安全功能

PG17引入了新连接参数 sslnegotiation,允许 PostgreSQL 在使用 ALPN时直接进行 TLS 握手,减少一次网络往返。同时在 ALPN 注册为 postgresql。此版本还添加了用户认证时触发的新 EventTrigger,以及在 libpq 中新增 PQchangePassword API,实现客户端自动对密码取哈希,提升安全性。另外,新增了预定义角色 pg_maintain,赋予用户执行多种维护权限,并确保 search_path 在执行维护操作时的安全性。最后,支持使用 ALTER SYSTEM 设置系统无法识别的未定义的配置参数。

备份与导出管理

PG17可以使用 pg_basebackup进行增量备份,并增加了一个新的实用工具 pg_combinebackup,用于备份恢复过程中将备份合并。该版本为 pg_dump新增了一个参数项 --filter,允许指定一个文件来进一步指定在 dump 过程中要包含或排除哪些对象。

监控

EXPLAIN命令现增加SERIALIZE和MEMORY选项,分别展示数据序列化耗时和优化器内存使用情况。同时,EXPLAIN还能显示I/O读写耗时。PostgreSQL 17统一了pg_stat_statements中CALL的参数,减少了频繁调用的存储过程记录数。此外,VACUUM进度报告现在会显示索引垃圾回收的进度。PG17还引入了一个新视图,pg_wait_events,提供关于等待事件的描述,可以与 pg_stat_activity 共同使用,以便深入了解活动会话出现等待的原因。此外,pg_stat_bgwriter视图中的一些信息,现在被拆分到新的 pg_stat_checkpointer视图中了。

HashData研发团队贡献核心力量

HashData研发团队一直活跃于PostgreSQL社区。在PostgreSQL 15、16等多个版本中,都能看到HashData研发团队以代码编写、审核、检测等方式参与了数十项开源贡献,为PostgreSQL性能改进和提升提供了有力支持。在最新发布的PG17版本中,HashData研发团队也参与了几项重要贡献:示例一:极具实用性的全新feature,极大地提升了批量导入数据的便捷性0b2b34784d93696008069ca7bf084923.jpegHashData研发团队贡献信息值得一提的是,这是Hashdata第一次有feature进入社区代码,意味着我们的技术能力得到了更广泛的认可与关注。COPY FROM命令是PostgreSQL中用于批量导入数据的强大工具。在数据处理过程中,根据数据和用户定义情况,某些列可为空值。用户可以为这些列设置默认选项,强制为空或者不为空。以往,用户需要逐一设置每一列的空值设置,这在处理大量列(例如,PostgreSQL默认支持的上限是1600列)时变得极为繁琐。全新的feature 为COPY FROM 命令增加FORCE_NULL *和FORCE_NOT_NULL *选项,允许用户轻松的为数据的所有列设置强制为空,或不为空,极大地提高了数据导入的效率。

  • 示例二:代码重构,提升了代码的简洁性和执行的高效性

163b7fa6bb3d4a5cddbfe8f80344c279.jpegHashData研发团队贡献信息PostgreSQL支持LIMIT、FETCH等语句,这些语句在内部通过不同的枚举选项来实现。然而,HashData团队在深入阅读和理解代码后,发现LIMIT_OPTION_DEFAULT这一选项实际上是多余的,PostgreSQL的解析树已经能够充分表达相应的逻辑。经过严格的验证测试,清理了这部分不必要的代码,提升了PostgreSQL代码的简洁性和执行的高效性。此外,HashData的研发团队还积极参与了代码的Review工作,凭借严谨的态度和专业的技能,为PostgreSQL新版本的稳定性和性能提供了有力保障。

结语

在全球开源社区的共同努力下,PostgreSQL已经发展成为一款功能强大、稳定可靠的开源数据库,广泛应用于各行各业。随着本次beta版本的发布,我们看到了PostgreSQL 17在性能优化、功能增强和安全提升等方面的显著进步。酷克数据HashData研发团队饮水思源,通过代码贡献、PG技术讲解等方式,不断以开源精神和技术实力回馈社区。 凭借团队对技术创新的不懈追求,酷克数据打造了一款面向分析和AI场景的下一代统一型开源数据库产品CloudberryDB,搭载了PostgreSQL 14.4 内核。CloudberryDB既能满足单机本地快捷部署,也能通过插件自由扩展为云原生架构,具备高弹性、高并发、湖仓一体化、扩缩容灵活等优势。同时,CloudberryDB支持丰富的数据类型和数仓/AI混合负载,可开展SQL分析、机器学习、全文检索、HTAP等任务,通过数据存储加密、联合⾝份验证等技术手段,帮助企业更方便地自建高效稳定的数据底座。f19a6eb7c650fa2619fc4c33c071bdd6.jpegCloudberryDB灵活部署形态
95db6aed842e53fe576522c6b27870de.jpegCloudberryDB产品兼容生态
CloudberryDB正在以国际标准、高点定位、全球眼光的运营理念,构建开放、友好、中立的开源社区。我们也期待有更多的开源爱好者加入我们,为开源世界贡献我们的一份力量。CloudberryDB GitHub 地址:https://github.com/cloudberrydb/cloudberrydb,欢迎大家访问体验。
参考链接:1、PG 17 Beta1版发布官方新闻:https://www.postgresql.org/about/news/postgresql-17-beta-1-released-2865/2、PG 17 Beta1版发布说明:https://www.postgresql.org/docs/17/release-17.html3、PG 17 Beta1版下载地址:https://www.postgresql.org/download/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/693571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】基于windows环境搭建Docker

目录 一、Docker Desktop搭建 二、前置准备 2.1开启 Hyper-V 2.2 Hyper-V选项看不到问题解决 2.3 开启或升级wsl 三、安装过程 3.1 下载安装包 3.2 安装 Docker Desktop 3.2.1 Docker 图标一直处于starting状态问题解决 3.3 配置仓库与镜像 3.4 docker功能测试 四、…

NRF52833串口和BLE升级bootloader合并(SDK1710,S113协议栈)

打pca10100_s113_ble_debug工程,将生成的key __ALIGN(4) const uint8_t pk[64] = {0xa3, 0x9a, 0x37, 0xb3, 0x1e, 0x44, 0xb5, 0x77, 0xb3, 0xa4, 0xf3, 0x65, 0xb8, 0xe6, 0xff, 0xa4, 0x33, 0x19, 0x30, 0x0c, 0xd8, 0xaf, 0xc6, 0x5a, 0xdf, 0xd1, 0x8f, 0xf3, 0xf3, 0xd…

TCP/IP协议分析实验:通过一次下载任务抓包分析

TCP/IP协议分析 一、实验简介 本实验主要讲解TCP/IP协议的应用,通过一次下载任务,抓取TCP/IP数据报文,对TCP连接和断开的过程进行分析,查看TCP“三次握手”和“四次挥手”的数据报文,并对其进行简单的分析。 二、实…

手机怎么压缩图片?通过三种压缩操作

手机怎么压缩图片?在智能手机日益普及的今天,拍照分享已成为日常生活的一部分。然而,高质量的照片往往占用较大的存储空间,且在网络上传输时速度较慢。那么,如何在手机上压缩图片呢?本文将介绍三种实用的手…

开源与新质生产力

在这个信息技术迅猛发展的时代,全球范围内的产业都在经历着深刻的变革。在这样的背景下,“新质生产力”的概念引起了广泛的讨论。无论是已经成为或正努力转型成为新质生产力的企业,都在寻求新的增长动力和竞争优势。作为一名长期从事开源领域…

详解 Flink 的 ProcessFunction API

一、Flink 不同级别的 API Flink 拥有易于使用的不同级别分层 API 使得它是一个非常易于开发的框架最底层的 API 仅仅提供了有状态流处理,它将处理函数(Process Function )嵌入到了 DataStream API 中。底层处理函数(Process Func…

BERT+PET方式数据处理

基于BERTPET方式数据预处理介绍 BERTPET方式数据预处理🐾 本项目中对数据部分的预处理步骤如下: 查看项目数据集编写Config类项目文件配置代码编写数据处理相关代码 1 查看项目数据集🐾 数据存放位置:/Users/***/PycharmProjects/llm/prom…

如何有效管理低绩效人员:CARES 框架

本文主要介绍了如何通过CARES框架有效管理低绩效员工,帮助他们提升绩效和积极性。原文: How to Effectively Manage Low Performers: The CARES Framework 作为管理者,最具挑战性的任务之一就是帮助表现不佳的团队成员提高积极性和技能水平。必须认识到&…

Linux磁盘分区使用情况查询

一、磁盘分区使用情况查询 1. 查询磁盘整体使用情况使用 df -h进行查询 如图我们可以了解到磁盘的一些大致的使用情况,注意当已用部分有超过80%使用的分区就意味着你需要进行磁盘的清理了。 2.查询指定的磁盘使用情况 使用指令 du -h 当不指定目录时,默…

“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

前言:在Java编程中,深拷贝(Deep Copy)与浅拷贝(Shallow Copy)是两个非常重要的概念。它们涉及到对象在内存中的复制方式,对于理解对象的引用、内存管理以及数据安全都至关重要。 ✨✨✨这里是秋…

秒解-今年高考数学压轴题,你不知道有多爽!附带:计算机程序验证结果

同步的公众号文章在此,今年高考数学-压轴题 原来可以秒解啊!附带:计算机程序验证结果没错,其实高考数学-压轴题其实可以秒解的呀~https://mp.weixin.qq.com/s/4M50qP9MFwJOS9OpeyxvSg 没错,其实新课标I数学-压轴题其实…

里卡提方程(Riccati Equation)例子

里卡提方程(Riccati Equation) 里卡提方程(Riccati Equation)在人形机器人控制中有重要的应用,特别是在最优控制和估计问题中。里卡提方程主要用于求解线性二次型调节器(LQR, Linear Quadratic Regulator)和卡尔曼滤波器(Kalman Filter)。这些方法有助于提高机器人控…

RISCV中CLINT和PLIC解析

中断这个东西理论上属于CPU核心的东西。一般来说并不需要重新设计。实际的实现中是比较繁琐的,此处只介绍原理。ARM基本上会用NVIC(Nested Vectored Interrupt Controller) 的东西,RISC-V目前实现了一个比较简单的东西(有人称之为简洁高效&am…

Dubbo 3.x源码(20)—Dubbo服务引用源码(3)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了调用createProxy方法,根据服务引用参数map创建服务接口代理引用对象的整体流程,我们知道会调用createInvokerForRemote方法创建远程引用Invoker,这是Dubbo …

QT系列教程(10) QTextEdit学习

简介 QTextEdit是文本编辑器,支持富文本功能。接下来我们创建一个Qt Application 应用,然后在ui中添加一个QTextEdit插件。 运行程序后,可以在QTextEdit中输入任何文字也包括富文本。 文本块 我们在MainWindow的ui文件中添加了textedit插件…

算法刷题【二分法】

题目: 注意题目中说明了数据时非递减的,那么这样就存在二分性,能够实现logn的复杂度。二分法每次只能取寻找特定的某一个值,所以我们要分别求左端点和有端点。 分析第一组用例得到结果如下: 成功找到左端点8 由此可知&#xff0…

Autosar Dem配置-Condition(TRC)的使用-基于ETAS软件

文章目录 前言Dem配置DemEnableConditionDemEnableConditionIdDemEnableConditionStatus DemEnableConditionGroupDemEventParameter 接口配置代码实现总结 前言 在车辆工作状态下,每个DTC检测可能都需要一个前提条件,否则如果任何条件下都可以进行DTC检…

C# WPF入门学习主线篇(十七)—— UniformGrid布局容器

C# WPF入门学习主线篇(十七)—— UniformGrid布局容器 欢迎来到C# WPF入门学习系列的第十七篇。在前几篇文章中,我们已经探讨了 Canvas、StackPanel、WrapPanel、DockPanel 和 Grid 布局容器及其使用方法。本篇博客将介绍另一种非常实用且简单…

coap-emqx:使用libcoap与emqx通信

# emqx开启CoAP网关 请参考【https://blog.csdn.net/chenhz2284/article/details/139562749?spm1001.2014.3001.5502】 # 写一个emqx的客户端程序&#xff0c;不断地往topic【server/1】发消息 【pom.xml】 <dependency><groupId>org.springframework.boot<…

一分钟学习数据安全—自主管理身份SSI加密技术

上篇介绍了SSI的架构。架构之后&#xff0c;我们要了解一下SSI发展的驱动力&#xff1a;加密技术。现代数字通信离不开数学和计算机科学&#xff0c;加密技术也源于此。加密技术使区块链和分布式账本得以实现&#xff0c;也使SSI成为可能。 以下我们就概览一下SSI基础架构中涉及…