2009-08-14 87 views
3

我正在编写新的数据库连接代码,并认为我会尝试使用proxool作为连接池实施者。使用proxool时,是否需要显式关闭每个getConnection()?

通常情况下,程序员会确保每个DriverManager.getConnection(...)后面跟着一个connection.close()。

但是,当使用Proxool时,是否需要关闭?我很困惑,因为:

a。这里的proxool文档 (http://proxool.sourceforge.net/quickStart.html) 显示close()被调用,但是,

b。我读了一个地方,proxool 增加了关闭挂钩,当程序退出时关闭所有 连接。我不知道Proxool的getConnection()/ close()如何影响性能。我的程序最关心的是性能(最高可达200​​个DB /秒),所以我不确定Proxool的getConnection()/ close()会如何影响性能。

我的问题是:

  1. 是关闭()需要,我也可以靠Proxool的关闭我的连接吗?

  2. 如果我必须每次都明确地调用close()函数,那会不会对性能产生负面影响?

在此先感谢。

回答

7

数据库池通常是子类/装饰连接,因此close()方法(如果它由应用程序调用)并未实际关闭连接,而是将其释放回池中。这是出于性能原因而完成的,因为每次建立新的连接可能会非常昂贵,以及为了提高您的用户/连接比率。

这就是说,你DO需要调用connection.close(),从而让池中知道你不再使用它,它可以提供给请求它的下一个线程。

相关问题