我想更好地理解Connection Pooling在Postgres中使用Npgsql时的含义.(http://www.npgsql.org/)

当我使用连接字符串时:

UserID=root;Password=myPassword;主机=本地主机;端口=5432;数据库=myDataBase;池=真;最小池大小=0;最大池容量=100;

"联营"将在哪里进行?在我的应用服务器上还是在数据库上?

当我呼叫转接时.Open(),会发生什么?是否从池中获取连接(如果存在),如果不存在,是否创建池?

如有关于连接池的任何其他一般信息,将不胜感激.

谢谢

推荐答案

Npgsql连接池是在应用程序进程内部实现的——它与PostgreSQL无关,后者完全不知道这一点.

机制非常简单.关闭池连接时,物理连接在内存中保持空闲(在"池"中),而不是物理关闭与PostgreSQL的连接.下次打开新连接时,如果其连接字符串与池中已存在的物理连接匹配,则该物理连接将被重用,而不是打开新的物理连接.

由于打开/关闭物理连接是一个昂贵的过程,这将大大加快应用程序的速度.

Postgresql相关问答推荐

org.postgresql. util.PSQLException:使用docker + docker—compose + kafka + springboot时try 连接失败

在Go中,如何在没有数据库包的情况下运行PostgreSQL查询?

用于JSON数组的带有组合条件的Postgres JSONB Select 查询

Postgres SQL:获取列值在连续日期之间已更改的行

锁定模式与PostgreSQL中的另一种锁定模式冲突到底是什么意思?

在特定值的组聚合中添加标签列作为结果

即使不对订阅服务器进行任何修改,Postgres逻辑复制也可能发生冲突吗?

如何在 postgres where 子句中使用 or 对条件进行组合或分组

在 postgres/presto/AWS-Athena 中,与 array_agg( (col1, col2) ) 相反的是什么来获得每组多行?

PostgreSQL:如何从另一列的 json 值替换为一列?

Postgres 将分区附加到表的时间太长.想明白为什么

为什么我使用 VBA 只能从 postgres 获得 10 行?

将数组插入 Postgresql 数据库

Rails 4查询由单个属性唯一

如何只允许一个表的一行?

无法安装 psycopg2 Ubuntu

在不存在的行上有select for update块

Rails:PG :: InsufficientPrivilege:错误:permission denied for relation schema_migrations

使用 cte (postgresql) 的结果更新

GRANT SELECT 特权使用一个语句对所有序列