21

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

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

谢谢,安德里亚

4

1 回答 1

29

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

这非常适合大多数应用程序,因为通常希望在一秒钟内多次使用连接。

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

于 2012-01-27T12:44:51.063 回答