大象资讯:PostgreSQL 17 Beta 1 发布!

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~

PostgreSQL 全球开发小组 发布于 2024-05-23

PostgreSQL 全球开发小组宣布,PostgreSQL 17 的第一个测试版本现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预览,但测试期间版本的某些细节可能会发生变化。

您可以在发行说明中找到有关 PostgreSQL 17 的所有功能和更改的信息:

https://www.postgresql.org/docs/17/release-17.html

本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在您的系统上测试 PostgreSQL 17 的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议您在生产环境中运行 PostgreSQL 17 Beta 1,但我们鼓励您找到针对此 Beta 版本运行典型应用程序工作负载的方法。

您的测试和反馈将帮助社区确保 PostgreSQL 17 版本符合我们的标准,即提供世界上最先进的开源关系数据库的稳定、可靠版本。请阅读有关我们的beta 测试流程以及您如何做出贡献的更多信息:

https://www.postgresql.org/developer/beta/

PostgreSQL 17 功能亮点

查询和操作性能改进

PostgreSQL 17 以最新版本为基础,并继续提高整个系统的性能。负责回收存储的 PostgreSQL 进程Vacuum1GB具有新的内部数据结构,已显示内存使用量减少了 20 倍,同时完成工作的总时间也有所缩短。此外,vacuum 进程不再限制其可使用的内存(由 控制maintenance_work_mem),让您可以选择将更多资源应用于 vacuum 操作。

此版本引入了流 I/O 接口,在执行顺序扫描和运行时可以显示性能改进ANALYZE。PostgreSQL 17 还包括可以控制事务、子事务和多事务缓冲区的可扩展性的配置参数。

PostgreSQL 17 现在可以使用规划器统计信息和公用表表达式(WITH查询)的排序顺序来进一步优化这些查询并帮助它们更快地执行。此外,此版本还显着提高了使用IN带有B 树索引的子句的查询的执行时间。从这个版本开始,PostgreSQL 可以删除对IS NOT NULL具有约束的列执行的冗余语句,并且不再需要对包含列子句NOT NULL的查询进行处理。现在从 PostgreSQL 17 开始,您可以对BRIN索引使用并行索引构建。IS NULLIS NOT NULL

具有高度并发更改的工作负载可以从 PostgreSQL 17 中受益,它改进了预写日志( WAL ) 锁的管理方式,一些测试显示性能提高了 2 倍。

最后,PostgreSQL 17 添加了更多明确的 SIMD 指令,包括对该bit_count函数的 AVX-512 支持。

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

PostgreSQL 17 为分区管理带来了更大的灵活性,增加了拆分和合并分区的功能,并增加了对分区表的标识列和排除约束的支持。此外,PostgreSQL 外部数据包装器( ) 可以从带有和子查询的postgres_fdw查询中获得性能优势,因为现在可以将这些查询推送到远程服务器。EXISTSIN

PostgreSQL 17 为逻辑复制添加了新功能,使其在高可用性工作负载和升级中更易于使用。从 PostgreSQL 17 升级到较新版本开始,您在使用时不再需要删除逻辑复制槽pg_upgrade,从而避免在升级后重新同步数据。此外,此版本还引入了逻辑复制的故障转移控制,为在高可用性环境中管理 PostgreSQL 数据库提供了更多控制。PostgreSQL 17 还允许逻辑复制订阅者使用hash索引进行查找,并引入了pg_createsubscriber使用物理复制在副本上添加逻辑复制的命令行工具。

开发人员体验

PostgreSQL 17 继续构建在 SQL/JSON 标准的基础上,添加了对JSON_TABLE可将 JSON 转换为标准 PostgreSQL 表的功能以及 SQL/JSON 构造函数 ( JSON、JSON_SCALAR、JSON_SERIALIZE) 和查询函数 ( JSON_EXISTS、JSON_QUERY、JSON_VALUE) 的支持。值得注意的是,这些功能最初计划在 PostgreSQL 15 版本中使用,但由于设计考虑而在 Beta 期间恢复,这也是我们请求您在 Beta 期间帮助我们测试功能的原因之一!此外,PostgreSQL 17 为其jsonpath实现添加了更多功能,以及将 JSON 值转换为不同数据类型的能力。

该MERGE命令现在支持RETURNING子句,让您可以进一步处理已修改的行。您还可以MERGE使用新函数查看命令的哪一部分修改了行merge_action。PostgreSQL 17 还允许您使用该MERGE命令更新视图,并添加了一个WHEN NOT MATCHED BY SOURCE子句,以便在源行不满足条件时提供行为。

COPY用于高效地批量加载和导出 PostgreSQL 数据,现在使用 PostgreSQL 17,导出大行时性能可提高 2 倍。此外,COPY当源编码与目标编码匹配时,性能有所提高,并且有一个新选项,ON_ERROR即使插入行时出现错误,也可以继续复制。PostgreSQL 17 还为异步和更安全的查询取消例程提供了更好的支持,驱动程序可以使用 libpq API 采用这些例程。

PostgreSQL 17 包含一个内置排序规则提供程序,它提供与排序规则类似的排序语义C,只是使用UTF-8编码而不是SQL_ASCII。此新排序规则保证是不可变的,从而确保无论 PostgreSQL 安装在什么系统上运行,排序的返回值都不会改变。

安全功能

PostgreSQL 17 添加了一个新的连接参数,它允许 PostgreSQL 在使用ALPNsslnegotiation时执行直接 TLS 握手,从而消除网络往返。PostgreSQL在 ALPN 目录中注册为。postgresql

此版本引入了在身份验证期间执行的事件触发器,并在 libpq 中包含了一个新的 API,可PQchangePassword在客户端自动对密码进行哈希处理,以防止意外在服务器中以纯文本形式登录。

PostgreSQL 17 添加了一个名为的新预定义角色,该角色授予用户在所有关系上pg_maintain执行VACUUM、ANALYZE、CLUSTER、REFRESH MATERIALIZED VIEW、REINDEX和 的权限。LOCK TABLE此版本还确保了、、和等search_path维护操作的安全。最后,用户现在可以用来设置无法识别的自定义服务器变量的值。VACUUMANALYZECLUSTERREFRESH MATERIALIZED VIEWINDEXALTER SYSTEM

备份和导出管理

PostgreSQL 17 引入了使用 执行增量备份的功能pg_basebackup,并添加了一个名为 的新实用程序pg_combinebackup,该实用程序用作备份恢复过程的一部分。此版本向pg_dumpCalled中添加了一个新标志--filter,让您可以指定一个文件,其中包含有关要在转储中包含/排除哪些对象的说明。

监控

该EXPLAIN命令提供有关查询计划和执行的信息,并添加了两个新选项:SERIALIZE,显示将数据转换为网络传输所需的时间,以及MEMORY,报告优化器内存使用情况。此外,EXPLAIN现在可以显示 I/O 块读取和写入所花费的时间。

CALLPostgreSQL 17 规范了in的参数pg_stat_statements,减少了频繁调用的存储过程的条目数量。此外,VACUUM进度报告现在显示清理索引的进度。 PostgreSQL 17 还引入了一个新视图 ,pg_wait_events它提供了有关等待事件的描述,并且可以结合使用pg_stat_activity以更深入地了解活动会话正在等待的原因。此外,视图中的一些信息pg_stat_bgwriter现在被拆分到新pg_stat_checkpointer视图中。

附加功能

PostgreSQL 17 中添加了许多其他新功能和改进。其中许多功能也可能对您的用例有所帮助。请参阅 发行说明以获取新功能和更改功能的完整列表:

https://www.postgresql.org/docs/17/release-17.html

测试错误和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您(社区)使用您的工作负载和测试工具测试即将推出的版本,以便在 PostgreSQL 17 全面可用之前发现错误和回归。由于这是 Beta,因此对数据库进行了微小更改行为、功能细节和 API 仍然是可能的。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。

PostgreSQL wiki 中公开了未解决问题的列表。您可以 使用 PostgreSQL 网站上的此表单报告错误:

https://www.postgresql.org/account/submitbug/

Beta 计划

这是版本 17 的第一个 Beta 版本。PostgreSQL 项目将根据测试需要发布其他 Beta 版本,然后发布一个或多个候选版本,直到 2024 年 9 月/10 月左右发布最终版本。有关更多信息,请参阅Beta 测试 页面。


-- / END / --

  • 从 PG 技术峰会南京站汲取的那些干货
  • PG 扩展推荐:pgpasswd & PG 密碼長度
  • PG Style! 盘点几个常用的 Postgres 环境变量
alt

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IEN在Web3.0中的性能与安全优势

随着Web3.0的快速发展,优化网络基础设施变得至关重要。智能生态网络(Intelligent Ecological Network, IEN)作为新一代网络架构,在提升性能与增强安全方面展现出巨大潜力。本文将深入探讨IEN在Web3.0中的技术优势,并展…

高效利用键盘上的 caps lock(大写键)实现中英切换

先看效果 在中文输入环境中,Caps Lock 键经常被忽视,占据了键盘上的黄金位置却很少派上用场。接下来,我将介绍如何将这个闲置的键合理利用,让它变得更加实用。 第一步 设置: 我以五笔为例: 1.输入法默认…

docker如何拉取redis最新镜像并运行

要拉取Docker Hub上最新版本的Redis镜像,您可以使用以下命令: docker pull redis:latest 这里的latest标签会自动获取Redis镜像的最新版本。如果您希望指定一个确切的版本号,可以直接使用该版本号替换latest。例如,要拉取Redis版…

高铁VR虚拟全景展示提升企业实力和形象

步入VR的神奇世界,感受前所未有的汽车展示体验。VR虚拟现实技术以其独特的沉浸式模拟,让你仿佛置身于真实展厅之中,尽情探索汽车的每一处细节。 一、定制化展示,随心所欲 VR汽车虚拟展厅打破空间束缚,让汽车制造商能够…

力扣1809 没有广告的剧集(postgresql)

需求 Table: Playback ----------------- | Column Name | Type | ----------------- | session_id | int | | customer_id | int | | start_time | int | | end_time | int | ----------------- 该表主键为:session_id (剧集id) customer_…

VUE3.0-列表渲染

我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法&#xff0c; 其中 items 是源数据的数组&#xff0c;而 item 是迭代项的别名 <template><h3>列表渲染</h3> <p v-for"item in names&quo…

调试时JSON库一直提示 PDB找不到 使用需要对象文件来进行调试的 /DEBUG:Fastlink生成的

最近调试时一直提示上面的提示框&#xff0c;很是烦躁。 为什么会出现这个错误呢&#xff0c;我一直使用的是/DEBUG。出现原因没有找出来&#xff0c;理论上市使用了/DEBUG:Fastlink这个模式才会出&#xff0c;但是就是一直在报这个错误。 /DEBUG&#xff08;生成调试信息&am…

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …

Flutter 中的 SnackBarAction 小部件:全面指南

Flutter 中的 SnackBarAction 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SnackBar 是一种流行的用于提供轻量级反馈的方式&#xff0c;它可以在屏幕上短暂显示消息。SnackBarAction 则是与 SnackBar 结合使用的一种按钮组件&#xff0c;允许用户对显示的消息做出响…

数据结构--顺序表

1.顺序表的概念 1.1线性表 具有相同特性的数据元素的有限序列&#xff0c;再逻辑结构上呈现线性&#xff0c;但是在物理结构上不一定是线性&#xff08;也就是在内存中非线性&#xff09; 顺序表是线性表中的一种&#xff0c;他的底层逻辑就是数组&#xff0c;就是对数组的一…

flink程序本地运行:No ExecutorFactory found to execute the application

1.问题描述 在idea中运行flink job程序出现如下错误&#xff1a; Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application. at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getE…

7文法分析 软设刷题 软考 +

文法分析 刷题1-55-1010-1515-2020-2525-3030-3535-4040-45 知识点1-55-1010-1515-2020-2525-3030-35 刷题 1-5 1 沟通渠道公式如下&#xff1a;Mn*&#xff08;n-1&#xff09;/ 2。M表示沟通渠道数&#xff0c;n表示项目中的成员数 2 本题给出的NFA&#xff0c;能够识别字…

基于STM32控制的双轮自平衡小车的设计

基于STM32控制的双轮自平衡小车的设计是一项涉及电子、控制理论、机械设计和编程的综合工程。以下是关于该设计的一个概述&#xff0c;包括关键组件、控制策略和示例代码。 设计概述 1. 项目背景 自平衡小车作为一种智能控制系统&#xff0c;其设计和实现涉及到多个学科领域…

c++20 std::jthread 源码简单赏析与应用

std::jthread 说明&#xff1a; std::jthread 是 C20 中引入的一个新特性&#xff0c;它是线程库中的一个类&#xff0c;专门用于处理 std::thread 与 std::stop_token 和 std::stop_source 之间的交互&#xff0c;以支持更优雅和安全的线程停止机制。 std::stop_source控制…

微软开发者大会:编程进入自然语言时代、“AI员工”闪亮登场

当地时间周二&#xff0c;美国科技公司微软召开年度Build开发者大会。在CEO纳德拉的带领下&#xff0c;微软各个产品团队再一次展现出惊人的执行力&#xff0c;在发布会上又拿出了接近50个新产品或功能更新。 整场发布会持续了接近两个小时&#xff0c;在这里挑选了一些投资者…

web自动化文件上传弹框处理

目录 文件上传介绍文件上传处理Alert 弹窗介绍Alert 弹窗处理 课程目标 掌握文件上传的场景以及文件上传的处理方式。掌握 Alert 弹窗的场景以及 Alert 弹窗的处理方式。 思考 碰到需要上传文件的场景&#xff0c;自动化测试应该如何解决&#xff1f; 文件上传处理 找到文…

el-switch自动触发更新事件

比如有这样一个列表&#xff0c;允许修改单条数据的状态。希望在更改el-switch状态时能够有个弹框做二次确认&#xff0c;没问题&#xff0c;el-switch已经帮我们想到了&#xff0c;所以它提供了beforeChange&#xff0c;根据beforeChange的结果来决定是否修改状态。一般确认修…

【python】串口双向透传python小程序

串口双向透传python小程序 import serial import threadingdef serial_forward(source, dest):while True:data source.read()dest.write(data)def main():# 串口1设置serial_port1 serial.Serial(COM9, 9600, timeout1)# 串口2设置serial_port2 serial.Serial(COM30, 9600…

递归,进程fork(),以及线程clone()之间的比较

在计算机科学中&#xff0c;处理复杂任务的常见方法有递归、进程&#xff08;通过 fork 创建&#xff09;&#xff0c;以及线程&#xff08;通过 clone 创建&#xff09;。这三种方式各有其独特的优势和适用场景。在本文中&#xff0c;我们将深入比较这三种方法&#xff0c;并展…

React Native 之 定义全局状态管理库(九)

假设你正在使用基于单页面应用&#xff08;SPA&#xff09;的微前端框架。以下简化一个应用之间共享状态的例子。 1. 使用发布/订阅模式 // globalStateManager.js class GlobalStateManager { constructor() { this.subscribers {}; this.state {}; } subscribe(key…