PG 14中的postgres_fdw增强功能

0    40    1

Tags:

👉 本文共约1785个字,系统预计阅读时间或需7分钟。

Foreign Data Wrappers(FDW)提供了一种机制,通过这种机制,可以使用常规SQL查询访问PostgreSQL之外的数据。PostgreSQL附带了“File FDW”和“PostgreSQL FDW”。PostgreSQL FDW可能看起来有悖常理,但它是一个非常有用的功能。这个版本的FDW有一些非常有用的更新。

所以,让我们开始了解发生了什么变化。

性能特征

如果您已经在使用PostgreSQL FDW,请注意性能的改进。

1 – 并行/异步 外部扫描

(允许一个查询引用多个外部表,并行执行外部表扫描)

当在多台服务器上执行远程聚合和远程连接时,可能会造成性能噩梦。现在可以异步并行执行。之前的顺序执行非常缓慢,在某些情况下,速度会很慢。为此,添加了一个新的选项async_capable,它允许并行计划和执行外部表扫描。

创建服务和用户映射

创建本地表

创建外部表

看看计划树,现在你可以在计划树中看到两个异步的外部扫描计划。

2 – 批量插入

(允许postgres_fdw批量插入行。)

现在,批量插入功能已添加到FDW中,postgres_fdw现在支持该功能。其他FDW也有机会实现批量插入。你可以在这里看到。

功能特性

1 – TRUNCATE 命令

(允许TRUNCATE对外部表进行操作)

这意味着它会向外部服务器出TRUNCATE命令,并在表上执行。这个功能是在postgres_fdw中实现的。下面是一个例子。

现在,可以TRUNCATE外部表。

2 – LIMIT TO 子分区

(如果指定IMPORT FOREIGN SCHEMA … LIMIT TO,则允许postgres_fdw导入表分区。)

postgres_fdw不允许导入表分区,因为可以使用根分区访问数据。但是,如果用户想要导入分区表分区,PostgreSQL 14添加了一个新的选项LIMIT TO

在远程计算机上创建一个新schema,并添加一个父表foo_schema.foo_table_parent和一个子表foo_schema.foo_table_child

在不指定LIMIT TO的情况下导入schema,只能看到导入的父表

如果您在LIMIT TO子句中显式指定了分区表,那么它将导入该表。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

3 – 活动和有效的连接列表

(添加postgres_fdw_get_connections函数以报告打开的外部服务连接)

添加了一个新函数postgres_fdw_get_connections()。该函数将打开的连接名本地会话返回到postgres_fdw的外部服务。它还输出连接的有效

现在断开所有连接并重试查询。

4 – 保持连接

(添加丢弃缓存的连接功能)

添加了一个新选项keep_connections,以保持连接处于活动状态,以便后续查询可以重用它们。默认情况下,此选项处于on状态,但如果off,则在事务结束时将丢弃连接。

关闭这个选项

使用远程查询建立连接。

设置 keep_connections 选项为 on

5 – 重建断开连接

(必要时允许postgres_fdw重新建立外部服务连接)

以前,当远程服务重新启动并且postgres_fdw连接断开时,由于缓存的连接不再可用,因此引发了错误。这在PostgreSQL中是固定的,在任何情况下,连接都会断开并且不再存在于缓存中,postgres_fdw将重新建立连接。

结论

FDW API很有希望在每个版本中都得到扩展,但PostgreSQL 14提供了一些以用户为中心的新功能。与性能相关的改进为许多相关用例使用FDW提供了另一个理由。该功能肯定会在接下来的几个版本中添加,使这些版本更具性能,更易于使用。

参考

https://mp.weixin.qq.com/s/7XjPa-ZeU8mNCvcIwOTHrA

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部