2017-05-30 156 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