2017-05-30 191 views
1

我想更好地瞭解連接池當使用Npgsql for Postgres時。 (http://www.npgsql.org/Postgres Npgsql連接池

當我使用的連接字符串:

用戶名=根;密碼= MYPASSWORD;主機=本地主機,端口= 5432;數據庫= MyDatabase的;池= TRUE;閔池大小= 0;最大池大小= 100;

「Pooling」將在哪裏發生?在我的應用程序服務器或數據庫上?

當我調用connection.Open()時會發生什麼?如果存在連接,則連接是否從池中取出,如果不存在,是否創建池?

任何有關連接池的其他一般信息將不勝感激。

謝謝。

回答

5

Npgsql連接池在您的應用程序進程內部實現 - 它與PostgreSQL無關,而PostgreSQL完全不知道它。

該機制非常簡單。當關閉池連接時,物理連接不會在物理上關閉到PostgreSQL的連接,而會保持空閒狀態(在「池」中)。下次打開新連接時,如果其連接字符串與池中已存在的物理連接相匹配,則重用該物理連接而不是打開新的物理連接。

由於打開/關閉物理連接是一個昂貴的過程,這大大加快了您的應用程序。

+0

謝謝,謝謝。欣賞信息。 – Chris