暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译] 利用 PostgreSQL 17 的功能推进数据库管理

刺史武都 2025-01-24
126

大多数 PostgreSQL 版本都有大约四到八个主要功能值得一提。然而,最新的 PostgreSQL 17 版本有所不同,因为它不仅有八个主要功能,而且还包括多个重点领域的数十个支持功能。

所有这些改进都得益于 Postgres 贡献者社区的不断壮大。正如 EDB 副总裁兼 Postgres 布道者 Bruce Momjian 指出的那样,这些新开发人员带来了新的观点和创新的想法,这些在 PostgreSQL 17 中得到了清晰的体现。

出于这些原因以及其他许多原因,EDB 副总裁兼首席工程师 Peter Eisentraut 指出 PostgreSQL 17 值得庆祝。我们邀请您与我们一起庆祝,并在我们的点播网络研讨会上与 Peter 和 Bruce 一起探索最新功能。

以下是网络研讨会中重点介绍的 PostgreSQL 17 的一些功能:

增量备份

PostgreSQL 17 中最显著的进步之一是新的增量备份功能,它解决了传统备份方法的低效率和挑战。

在此版本之前,PostgreSQL 有两种主要备份方法:

时间点备份(文件系统或 pg_dump)。时间点备份速度很快,但不允许连续更新,因此恢复可能需要重放大量预写日志 (WAL)。
连续存档/时间点。此功能允许恢复到任何时间点,但初始完整备份可能非常缓慢且耗费资源,尤其是对于大型数据库而言。
新的增量备份功能弥补了这一缺陷。它允许进行完整备份,然后通过应用预写日志来增量更新。这提供了时间点备份的好处,而没有初始完整备份的缺点。

新的 PostgreSQL 17 增量备份:

  • 可以在单独的机器上执行,减少对数据库服务器的影响并促进更高效的资源利用
  • 允许通过应用必要的增量备份恢复到任何时间点
  • 提供更大的备份管理灵活性,因为您可以以不同的间隔保留多个增量备份
  • 一旦不再需要旧的增量备份,即可轻松删除,从而简化备份管理
  • 由新的 WAL 摘要器进行补充,这是一个新的内部过程,它维护 WAL 文件中记录的更改摘要,并减少了读取大量日志文件的需要
    总体而言,PostgreSQL 17 中的新增量备份功能显著提高了备份和恢复功能,使其成为传统备份方法不切实际的大型或繁忙数据库的理想选择。

JSON 表功能

PostgreSQL 17 还显著增强了数据操作功能,尤其是 JSON 数据。PostgreSQL 多年来一直支持 JSON,但新的 JSON 表功能将其提升到了一个新的水平。它允许直接从 JSON 数据创建虚拟表,使您能够像常规表一样查询和操作 JSON。

这个新的 JSON 表功能

弥合 JSON 与关系数据之间的差距——您现在可以将 JSON 数据视为表,允许连接、分组和其他关系操作,而无需繁琐且容易出错的手动解析
提供声明性语法,从 JSON 文档中提取数据并将其映射到表列
允许将 JSON 数据与其他关系数据源无缝集成
该语法使用 JSON_TABLE 函数,您可以在其中指定 JSON 列并提供表达式以将 JSON 数据映射到表列。这允许从复杂的分层 JSON 文档中提取数据。

从 JSON 数据创建虚拟表不仅可以提高查询性能,还可以增强 PostgreSQL 作为多模型数据库的整体灵活性和可用性。

强大的复制错误处理

PostgreSQL 长期以来一直有一个用于从文件批量加载数据的复制命令,但以前如果输入数据中遇到任何错误,整个加载都会失败。新的复制错误处理功能解决了这一常见痛点,并使 Postgres 的批量加载功能更适合实际场景。

  • 复制命令现在可以处理输入数据中的错误,而不是中止整个加载。
  • 有一些选项可以控制如何处理错误,例如忽略无效的行。
  • 它解决了在 Postgres 可插入数据类型中有效捕获和处理这些错误的技术难题。
    虽然此初始实现提供了基本的错误处理,但我们将来会为此功能添加更多功能。此灵活功能对于在不牺牲效率的情况下保持数据完整性至关重要。

多功能合并命令

合并命令允许组合插入/更新/删除操作,这并不是每个人都必须使用的功能,但那些需要使用的人会喜欢这些增强功能:

  • 现在可以将合并与可更新视图一起使用,而以前它仅限于基表。
  • Merge 现在支持“RETURNING”子句,类似于 INSERT 和 UPDATE。这允许在单个语句中检索 Merge 操作的结果。
  • 作为 RETURNING 子句的一部分,添加了新的“MERGE_ACTION”函数。该函数指示每一行是否作为合并的一部分被插入、更新或删除。
    RETURNING 子句和 MERGE_ACTION 函数特别通过简化合并操作的工作流程来满足常见的用户请求。

优化器效率改进

我们对 Postgres 优化器的改进感到非常兴奋,其中许多改进是由新活跃的贡献者推动的。改进包括:

来自通用表表达式 (CTE) 的统计数据传播

以前,第一个 CTE 的统计信息和排序顺序信息不会传递到查询的后续部分。PostgreSQL 17 通过允许优化器为涉及 CTE 的查询生成更好的计划来解决此问题。

对 NOT NULL 列的优化

查询在 NOT NULL 列中要求 NULL 值时,可以立即确定不返回任何行。查询在已知为 NOT NULL 的列上检查“IS NOT NULL”可以跳过不必要的检查。这些优化消除了常见的中间件生成的查询的不必要工作。

改进相关子查询的处理

相关子查询(其中子查询引用外部查询中的列)很难优化。以前在 PostgreSQL 16 中使用子计划的示例查询现在已优化为在 PostgreSQL 17 中使用哈希连接。

其他优化器增强功能

PostgreSQL 17 还对布尔分区、范围值、分区 LIMIT、GROUP BY 和并行性的处理进行了改进。

如果您对优化器感兴趣,您可以对几个查询运行解释以查看新的改进。

增强逻辑复制

自版本 10 开始提供的逻辑复制通常被视为一种通用性有限的专用工具。PostgreSQL 17 通过引入关键增强功能改变了这一现状,使逻辑复制更加用户友好,并且适用于更广泛的应用程序。增强功能包括:

新的 pg_createsubscriber 工具

新的 pg_create_subscriber 工具通过自动执行许多以前的手动步骤简化了逻辑副本的创建。此工具可实现更快、更高效的复制,从而更轻松地维护数据库的最新副本以用于分析或其他目的。

改进了逻辑副本的故障转移处理

在 PostgreSQL 17 之前,如果主数据库故障转移到物理备用数据库,逻辑副本就会中断,从而需要完全重建。但现在,有了新的内置故障转移支持,即使主数据库故障转移到备用数据库,逻辑副本也可以继续无缝运行。这一改进对于保持高可用性和最大限度地减少关键系统的停机时间至关重要。

这些逻辑复制增强功能解决了长期以来围绕配置复杂性和弹性的痛点。它们还为进一步改进和更广泛地采用逻辑复制功能奠定了基础。

数据库技术向前迈出的重要一步

PostgreSQL 17 具有增量备份、数据仓库优化、高级逻辑复制等功能,提高了数据库管理性能、可扩展性和弹性。我们鼓励您探索这些新功能并考虑升级以亲自查看结果。

原文地址:https://www.enterprisedb.com/blog/postgresql-17-unveiled-key-highlights-data-backup-data-warehousing-and-more
原文作者:EDB Team

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论