2015-10-11 62 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

相關問題