2016-12-28 107 views
5

釋放臨時表我使用MySQL的temporary tablesconnection pooling連接池,並在返回

通常情況下,在會話留在該會話中創建並在連接關閉被刪除臨時表。但是,由於我使用的是連接池,並且在調用java.sql.Connection.close()時物理連接並未實際關閉,所以我發現臨時錶停留並影響下一次會話。

這將導致資源泄漏的DB,因爲臨時表不立即釋放,以及名稱的衝突,由於衝突的表名。

直觀地說,我期待一個乾淨的石板,當我借的連接。如何實現這一目標?

從臨時表

除此之外,這個問題也影響:

+0

* * ...這是在用詞上矛盾性「返回到池時可以工作,務必關閉物理連接」,不是嗎?如果連接關閉,則不會回到池中。你可以試着通過發出查詢'ROLLBACK RELEASE'強制池釋放數據庫連接;'這幾乎肯定會做你正在做的事情,但副作用將是有趣的,池化成爲有點沒意義。從根本上講,在創建表之前,您的代碼必須確保它自己進行初始化,「DROP TEMPORARY TABLE IF EXISTS ...」,等等。 –

回答

0

使用MySqlConnection.ClearPool(連接)的;能行得通。 我對GET_LOCK()有類似的問題,MySqlConnection.ClearPool(連接)可以解決這個問題。