关闭后连接仍然空闲

时间:2012-01-27 12:39:28

标签: c# postgresql npgsql

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

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

感谢, 安德莉亚

1 个答案:

答案 0 :(得分:15)

与大多数ADO.NET提供程序一样,Npgsql默认使用连接池。当Close() NpgsqlConnection对象时,表示Npgsql使用的实际底层连接的内部对象进入要重用的池,从而节省了不必要地创建另一个的开销。 (有关详细信息,请参阅What does "opening a connection" actually mean?。)

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

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

相关问题