我有一个C#客户端应用程序,需要每15分钟检查Postgres数据库上的一个表。 问题是,我需要将此客户端安装到大约200个客户端中,因此我需要在查询后关闭DB连接。
我使用了.Close()方法,但是,如果我在Postgres DB的pg_stat_activity表上检查,我可以看到该连接仍处于IDLE状态。 我该如何解决这个问题? 是否可能彻底关闭连接?
谢谢, 安德烈亚
我有一个C#客户端应用程序,需要每15分钟检查Postgres数据库上的一个表。 问题是,我需要将此客户端安装到大约200个客户端中,因此我需要在查询后关闭DB连接。
我使用了.Close()方法,但是,如果我在Postgres DB的pg_stat_activity表上检查,我可以看到该连接仍处于IDLE状态。 我该如何解决这个问题? 是否可能彻底关闭连接?
谢谢, 安德烈亚
Close()
NpgsqlConnection
对象时,表示Npgsql实际使用的底层连接的内部对象会进入池中以便于重复使用,这样可以节省创建不必要连接的开销。(有关更多信息,请参见打开连接到底意味着什么?)。Pooling=false
选项,则将覆盖此默认设置,并且Close()
确实会关闭实际连接。pooling = true
,是否有可能关闭所有连接? - Dominic JonasNpgsqlConnection.ClearPool()
可以清除与特定连接相关联的池,使用NpgsqlConnection.ClearAllPools()
可以清除所有连接池。 - Jon Hanna