关闭后连接仍然空闲

And*_*rdi 15 c# postgresql npgsql

我有一个C#客户端应用程序需要每15分钟检查一次Postgres数据库上的表.问题是我需要将此客户端安装到或多或少200个客户端,因此我需要在查询后关闭数据库连接.

我使用.Close()方法但是,如果我检查Postgres DB上的pg_stat_activity表,我可以看到连接仍处于IDLE状态.我该如何解决这个问题?是否有可能完全关闭连接?

谢谢,安德烈

Jon*_*nna 19

与大多数ADO.NET提供程序一样,Npgsql默认使用连接池.当您使用Close()NpgsqlConnection对象时,表示Npgsql使用的实际底层连接的内部对象将进入要重用的池中,从而节省了不必要地创建另一个的开销.(请参阅"打开连接"实际上意味着什么?更多).

这很适合大多数应用程序,因为在一秒钟的时间内多次使用连接是很常见的.

它根本不适合您,但如果您Pooling=false在连接字符串中包含该选项,它将覆盖此默认值,并且Close()确实将关闭实际连接.

  • 这就是我喜欢这个网站的原因!来自技术娴熟的人的快速转发!谢谢您的帮助! (4认同)
  • @DominicJonas使用`NpgsqlConnection.ClearPool()`来清除与特定连接相关联的池,`NpgsqlConnection.ClearAllPools()`来清除它们. (4认同)