首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在postgres中创建可以继续使用的dblink连接

如何在postgres中创建可以继续使用的dblink连接
EN

Stack Overflow用户
提问于 2021-07-21 07:58:52
回答 2查看 601关注 0票数 0

所以-我可以创建一个dblink连接-例如

代码语言:javascript
复制
select * from dblink( 'dbname=whatever host=the_host user=the_user password=my_password', 'select x, y, z from blah')

效果很好。我甚至可以建立一个持久的连接

代码语言:javascript
复制
select * from dblink_connect( 'dev', 'dbname=whatever host=the_host user=the_user password=my_password');

select * from dblink( 'dev', 'select x, y, z from blah' );

效果很好。一段时间。然后过了一段时间--如果我再次尝试使用dev --它就开始告诉我“没有打开的连接”。但是,如果我再次尝试运行connect命令,它会告诉我一个具有该名称的连接已经存在。

那么,我如何建立一个命名的连接,我和其他人可以永远直接使用这个连接,而不必做任何连接/断开连接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-21 15:32:55

您可以给dblink()提供外部服务器的名称,而不是连接的名称。

代码语言:javascript
复制
create server dev foreign data wrapper dblink_fdw options (host 'thehost', dbname 'whatever');
create user mapping for public server dev options (user 'the_user', password 'my_password');

然后像现在一样运行dblink查询,使用'dev‘作为名称。

请注意,这将增加连接的数量,只是系统管理它们,这样您就不需要这样做了。因此,这是为了方便,但不是为了性能。

票数 1
EN

Stack Overflow用户

发布于 2021-07-21 08:07:13

文献资料说:

连接将持续到关闭或数据库会话结束。

因此,我怀疑您正在使用连接池,而且

  1. 您可以为每个事务获得不同的数据库会话(但dblink连接仅在其中一个事务中打开)
  2. 连接池可以在一段时间后关闭后端连接,从而也关闭dblink连接。

如果您想使用dblink这样的特性,其中会话比事务的持续时间更长,则需要会话级别池。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68465930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档