2015-10-11 36 views

回答

1

两个连接到一个会话是不可能的。一个会话只能处理一个连接。有可能在事务之间共享快照。一些PostgreSQL应用程序使用此功能,如pg_dump用于实现-j选项。共享快照不是共享会话 - 对于更改的可见性存在一些限制,此功能实际上很少使用。

查看related docarticle关于此功能。

-- first session 
BEGIN; 
SELECT pg_export_snapshot(); -- returns 00000AAF-1 

-- second session 
BEGIN; 
SET TRANSACTION SNAPSHOT '00000AAF-1'; 

接下来,两个会话的初始可见内容都是相同的。 但是第一次会议没有看到第二次会议的任何新活动,反之亦然。

+0

非常感谢。这将是合适的。我只需要第二次会话仅用于报告目的,它不会影响数据。 – user1909766

1

不,不是。在PostgreSQL中,会话与服务器的连接严格相关,因此会话和连接实际上是一个同义词。 当您通过任何通道(TCP,本地)连接到服务器时,postmaster进程会分叉创建会话的子进程,客户机应用程序正在“交谈”并运行事务。当你断开子进程时终止并且会话结束。

也许告诉更多关于您的要求? Pavel Stehulepropose you an interesting feature。但它确实是一种先进的东西,可能不是你想要的东西。

+0

非常感谢。我认为[Pavel Stehule](http://stackoverflow.com/users/406691/pavel-stehule)已经提出了很好的解决方案。 – user1909766

相关问题