DBLINK 与 Postgres_FDW,哪一个可以提供更好的性能?

mar*_*nia 4 postgresql dblink postgres-fdw

我有一个用例将数据分布在许多服务器上的许多数据库中,所有数据都在 postgres 表中。从任何给定的服务器/数据库,我可能需要查询另一个服务器/数据库。查询非常基本,标准选择在标准字段上使用 where 子句。

我目前已经实现了 postgres_FDW,(我使用的是 postgres 9.5),但我认为查询没有使用远程数据库上的索引。对于这个用例(一个随机节点可能会查询 N 个其他节点),根据每个底层引擎的实际执行方式,这可能是我的最佳性能选择?

Dan*_*Dan 5

Postgres 外部数据包装器 (postgres_FDW) 比 PostgreSQL 新,因此它往往是推荐的方法。虽然 dblink 扩展中的功能类似于外部数据包装器中的功能,但 Postgres 外部数据包装器更符合 SQL 标准,并且可以提供比 dblink 连接更高的性能

阅读这篇文章了解更多详细信息:跨数据库查询


mar*_*nia 4

我的解决方案很简单:我升级到 Postgres 10,它似乎将 where 子句推送到远程服务器。

  • 对于任何关心的人,如果您使用来自 postgis 的数据类型(几何等),您将必须在外部服务器定义中声明该扩展,否则 where 子句中的条件将不会被推送到远程服务器 (3认同)