关闭后连接仍处于空闲状态

本文关键字:于空闲 状态 连接 | 更新日期: 2023-09-27 18:21:31

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

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

谢谢,Andrea

关闭后连接仍处于空闲状态

与大多数ADO.NET提供程序一样,Npgsql默认使用连接池。当Close()对象NpgsqlConnection对象时,表示Npgsql使用的实际底层连接的内部对象会进入一个池中重新使用,从而节省了创建另一个不必要的连接的开销。(请参阅"打开连接"的实际含义?了解更多信息)。

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

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