问题标签 [postgres-fdw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
48 浏览

postgresql - postgres_fdw 每天刷新 500 万行是否可靠?

我正在使用 postgres_fdw 每天刷新我的应用程序数据库。那么,这是最好的流程吗?

0 投票
1 回答
542 浏览

postgresql - 从 postgresql 服务器使用 postgresql-fdw 连接到 Hive 数据库表

无法从 postgresql 服务器连接到远程服务器上的配置单元数据库。

尝试使用以下查询但不工作。连接已建立,但配置单元服务器没有响应。

结果未知,期待来自服务器的身份验证请求(SQL 状态 08001)。

我希望能够使用来自 postgresql 的 fdw 建立与 hive 数据库集群的连接以导入选择性数据。

非常感谢您提前和最好的问候!

0 投票
0 回答
241 浏览

postgresql - 从 PostgreSQL 11 外部数据包装器中选择(到 PG 9.5 远程)慢 15 倍

从外部包装视图中选择比在源数据库上直接选择需要 15 倍以上的时间。

尝试将 USE_REMOTE_ESTIMATE 'true' 添加到外部服务器。还尝试完全杀死 where 子句(将其烘焙到视图中),所以我知道没有谓词/聚合下推问题!

没有要发送的中间结果(没有本地连接),所以我不知道为什么这么慢。我已经阅读了 PG 9.5 FDW 的问题,后来的版本解决了这些问题。是我只需要升级那个数据库吗?

0 投票
0 回答
186 浏览

sql-server - 用于提取 SQL Server 元数据的 PostgreSQL TDS_FDW 连接

在 PostgreSQL 中创建元数据存储库,但在使用 TDS_FDW 时遇到困难,并尝试导入 SQL Server 的 INFORMATION_SCHEMA 表。

使用 tds_fdw 版本 2.0.0-alpha.3

当我尝试导入“master”时,TDS_FDW 会产生语法错误:

如果我使用 dbo 运行测试导入模式,它工作正常,但 INFORMATION_SCHEMA 不存在

将数据库和列名从 SQL Server 拉入 PostgreSQL 的功能性方法是什么?(自从我成为 SQL Server dba 以来已经有很多年了)

0 投票
1 回答
299 浏览

postgresql - Postgres 11 FDW 找不到分区表

尝试使用 postgres 11 外部数据包装器访问分区表。我可以访问基础表,但不能访问表。

这似乎很好。然后我创建了一个链接:

这有效:

这不

有什么想法吗?

0 投票
1 回答
816 浏览

postgresql - PostgreSQL 在同一个事务中创建视图和导入外部模式

我已经在两个数据库(sourcedb、targetdb)之间设置了 postgres_fdw,以便我可以从 sourcedb 中的模式在 targetdb 中创建外部数据表。

以上所有内容均已配置并按预期工作。

下一步是每次我在 sourcedb 中更改视图时重新导入外部模式。

为了实现这一点,我在 sourcedb 中创建了两个函数:

  1. fn_create_views
  2. fn_recreate_foreign_data_tables

在第一个函数 (fn_create_views) 中,我在循环中动态创建视图。循环结束后,我将调用第二个函数,该函数删除所有外部数据表并通过连接在 targerdb 上的 dblink 导入外部模式。

我在上面遇到的问题是,在“IMPORT FOREIGN SCHEMA”期间,“CREATE VIEW”没有提交,尽管所有外部表都被删除了,它没有将任何东西导入到 targetdb 模式中。

在阅读了 SO 中的几篇文章后,一些人建议通过 dblink 在同一个数据库上运行“CREATE VIEW”命令。显然这很有效,因为我猜 dblink 每次都会打开一个单独的事务。

我现在的问题是,是否有另一种更简单的方法可以在不单独调用上述函数的情况下完成上述操作?

谢谢!

0 投票
1 回答
1786 浏览

postgresql - Postgresql Foreign data wrapper error 如果服务器不请求密码,则非超级用户无法连接

我们正在使用 postgres_fdw 扩展来访问另一个数据库的视图。我已经测试了在 2 个不同的 PostgreSQL 服务器上访问外部表,它在一个服务器上工作,而另一台服务器抛出错误

我检查了 pg_hba.conf 文件,一台服务器正在使用信任方法进行本地访问,但仍然没有出现错误,但是另一台服务器在使用 trust 和 md5 这两个选项时出现错误。

下面是两台服务器的conf文件

  1. 抛出错误的服务器

在此处输入图像描述

  1. 查询正在运行且没有任何错误的服务器

在此处输入图像描述

下面是我创建外部服务器的脚本

0 投票
1 回答
2776 浏览

postgresql - PostgreSQL postgres_fdw 在使用 CURRENT_DATE - 1 但不使用硬编码日期时在大型外部表上查询非常缓慢

我正在使用 postgres_fdw 连接到另一个 PostgreSQL 数据库。有时查询的性能很好,但有时查询可能需要异常长的时间。我遇到了一个问题,如果我使用函数 CURRENT_DATE,查询需要大约 30 分钟,但如果我硬编码相同的日期,查询需要 1 秒。查看两个查询的 EXPLAIN ANALYZE,当我使用 CURRENT_DATE 时,它会扫描整个外部表,但是当我对日期进行硬编码时,它只扫描它需要的行。就好像使用 CURRENT_DATE 不使用表索引,但硬编码日期一样。但是,很难知道是否是这种情况,因为 EXPLAIN ANALYZE 只是将两个查询都列为“Foreign Scans”。为什么这两个查询会有如此不同的执行时间?

这是我正在比较的两个查询:

以下是分别来自每个查询的 EXPLAIN ANALYZE:

我在 Ubuntu 18.04 服务器上运行 PostgreSQL 12.1。

如果您还有其他问题,请告诉我!

编辑:当我在本地使用 CURRENT_DATE 运行查询时忘记添加(因为我实际上登录到我的 fdw 连接到的数据库并从那里运行它),只需要 1 秒。

0 投票
1 回答
581 浏览

sql - PostgresSQL 嵌套循环 - 计划者何时决定在执行 INNER JOIN 时使用嵌套循环?

我正在使用 INNER JOIN 运行查询,其中计划者决定使用嵌套循环。我发现它与 WHERE 条件有关,因为我尝试使用不同的 WHERE 条件编写查询,因此它返回相同的结果但不使用嵌套循环。

我的问题是为什么规划者决定在查询看起来相同时做出不同的决定,因为它们都返回相同的结果?使用嵌套循环的查询在 77 秒内运行,没有嵌套循环的查询在 13 秒内运行,而在 13 秒内运行的查询非常丑陋和不雅,让我认为有更好的方法来编写它。

这是两个查询。请注意,两者之间的区别在于 WHERE 子句如何按日期过滤,其中第一个使用 BETWEEN,第二个使用一系列 OR 语句。我知道 current_date 被包装在他们自己的子查询中很奇怪,但那是因为这些查询使用了外部数据包装器。这允许 current_date 作为不可变对象传递,以大大提高性能。

以下是各自的解释分析:

我在 Ubuntu 18.04 服务器上运行 PostgreSQL 12.1。

如果您还有其他问题,请告诉我。谢谢!

0 投票
0 回答
71 浏览

postgresql - PostgreSQL - 为什么规划者在进行外部扫描时会低估行数?

我正在通过外部数据包装器(postgres_fdw)运行带有 INNER JOIN 的查询,当我查看 EXPLAIN ANALYZE 时,它显示其中一个外部扫描子节点低估了它在实际扫描 7 时只会扫描 1 行导致查询花费比预期更长的时间,因为这会导致其他 Foreign Scan 子节点循环 7 次,这是查询的主要瓶颈。这是查询及其各自的解释分析:

在将 default_statistics_target 值提高到 1000 后,我尝试在两个表上运行 ANALYZE,但规划器没有改变。

我还应该注意,当我使用 BETWEEN 将查询的 WHERE 部分更改为一系列 OR 语句时,(w.priceate = (SELECT current_date-6) OR w.priceate = (SELECT current_date-5) OR...) ,查询不使用嵌套循环,运行速度是原来的 7 倍。我不太确定为什么使用 BETWEEN 或一系列 OR 语句会产生相同的结果,但我假设这与计划者低估了 Foreign Scan 中的行数有关。

我在 Ubuntu 18.04 服务器上运行 PostgreSQL 12.1。

如果您还有其他问题,请告诉我。谢谢!