【问题标题】:DBLINK vs Postgres_FDW, which one may provide better performance?DBLINK vs Postgres_FDW,哪一个可以提供更好的性能?
【发布时间】:2018-01-16 18:11:12
【问题描述】:

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

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

【问题讨论】:

  • 升级到 9.6 或更好地升级到 10。自 9.5 以来,向远程服务器推送谓词和工作的能力得到了显着改进
  • 我认为查询没有使用远程数据库上的索引:使用EXPLAIN 找出远程查询并在远程数据库上使用EXPLAIN 以获取执行计划。

标签: postgresql dblink postgres-fdw


【解决方案1】:

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

阅读本文了解更多详细信息:Cross Database queryng

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 对于任何关心的人,如果您使用来自 postgis 的数据类型(几何等),则必须在外部服务器定义中声明该扩展名,否则 where 子句中的条件不会被推送到远程服务器
    • 你是不是必须使用 Postgres_fdw 或 blink 才能访问远程服务器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多