5
釋放臨時表我使用MySQL的temporary tables與connection pooling。連接池,並在返回
通常情況下,在會話留在該會話中創建並在連接關閉被刪除臨時表。但是,由於我使用的是連接池,並且在調用java.sql.Connection.close()
時物理連接並未實際關閉,所以我發現臨時錶停留並影響下一次會話。
這將導致資源泄漏的DB,因爲臨時表不立即釋放,以及名稱的衝突,由於衝突的表名。
直觀地說,我期待一個乾淨的石板,當我借的連接。如何實現這一目標?
- 對於MySQL,似乎沒有相應的SQL Server's
sp_reset_connection
。 - 即使有,我看不出dbcp2 can be configured調用它返回的連接時。
- 在返回池時總是關閉物理連接可能會起作用,但我看不出dbcp2如何配置來做到這一點。
除此之外,這個問題也影響:
* * ...這是在用詞上矛盾性「返回到池時可以工作,務必關閉物理連接」,不是嗎?如果連接關閉,則不會回到池中。你可以試着通過發出查詢'ROLLBACK RELEASE'強制池釋放數據庫連接;'這幾乎肯定會做你正在做的事情,但副作用將是有趣的,池化成爲有點沒意義。從根本上講,在創建表之前,您的代碼必須確保它自己進行初始化,「DROP TEMPORARY TABLE IF EXISTS ...」,等等。 –