2009-08-14 89 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(),從而讓池中知道你不再使用它,它可以提供給請求它的下一個線程。

相關問題