我真的不明白它们之间的区别,我什么时候应该使用ClearALLPools代替ClearPool(或反之)?
是否有任何具体方案可以使用其中一种?
答案 0 :(得分:5)
连接池非常有用,您应该使用它 - 它将连接对象的实际连接与数据库分开。您可以根据需要创建任意数量的连接对象,但最小化实际连接的数量。
但是,有一个成本 - 如果您不负责任地管理您的连接对象,那么将打开比(严格)要求更多的实际连接。在极端情况下,这会导致连接被拒绝,因为池已经达到极限。
正确的解决方法是既不调用ClearPool
也不调用ClearAllPools
。您应该找到泄漏连接对象并修复它们的位置。通常,每个连接对象都应 通过using
语句进行清理,或者,如果要保持打开状态,它应该是一个成员。一次性对象,它将连接作为其Dispose
函数的一部分关闭。
关于问题,如所要求的那样 - 连接池基于所使用的连接字符串。如果只对所有连接使用单个连接字符串,则方法是等效的。如果您使用多个连接字符串,那么差异就会变得明显,以一种显而易见的方式显示 - ClearPool
仅影响使用相同连接字符串的连接。