所以-我可以创建一个dblink连接-例如
select * from dblink( 'dbname=whatever host=the_host user=the_user password=my_password', 'select x, y, z from blah')效果很好。我甚至可以建立一个持久的连接
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命令,它会告诉我一个具有该名称的连接已经存在。
那么,我如何建立一个命名的连接,我和其他人可以永远直接使用这个连接,而不必做任何连接/断开连接?
发布于 2021-07-21 15:32:55
您可以给dblink()提供外部服务器的名称,而不是连接的名称。
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‘作为名称。
请注意,这将增加连接的数量,只是系统管理它们,这样您就不需要这样做了。因此,这是为了方便,但不是为了性能。
发布于 2021-07-21 08:07:13
文献资料说:
连接将持续到关闭或数据库会话结束。
因此,我怀疑您正在使用连接池,而且
如果您想使用dblink这样的特性,其中会话比事务的持续时间更长,则需要会话级别池。
https://stackoverflow.com/questions/68465930
复制相似问题