我創建了一個創建20個線程的測試程序,然後這些線程將打開許多sql連接。比方說,你正在執行這個程序從日食,現在如果你將關閉日食。這會關閉所有打開的sql連接嗎?如果不是,那麼這些會發生什麼?它會在數據庫端顯示100個打開的連接嗎?如果是,那麼在這種情況下該怎麼辦?如果關閉JVM,sql連接會自動關閉嗎?
回答
連接將不會像撥打java.sql.Connection.close()
那樣關閉。基本上,打開連接的JVM不能保持活動的數據庫的TCP/IP連接。這些將立即關閉。因此,「連接」也將被關閉。但是,數據庫可能不會立即做出反應,並保持其會話存活一段時間。
在Oracle中,如果您有足夠的權限,則可以直接殺死數據庫中的會話。
我想,行爲是特定於供應商和/或配置的。沒有普遍的答案。
我相信這取決於您使用的數據庫和jdbc驅動程序。我想在大多數情況下,連接將會超時並且將被關閉,但不會立即發生。所以,更好的方法是明確關閉連接。這裏有一些常用的技巧:
- 在包裝db連接會話的finally塊中做。
- 以防萬一編寫finalize()方法並關閉連接。當連接關閉之前,它將有助於關閉連接,並且連接到數據庫的對象將被垃圾收集。
- 您可以創建在進程停止時由JVM自動調用的關閉掛接。這有助於在大多數情況下,當你從外面殺死JVM時(除了kill -9在unix)
順便說一句,我相信你的情況下,你不需要很多連接到數據庫。嘗試重用所有100個線程中的一個。
當進程退出時,內核將關閉所有TCP連接。 -1。 – EJP 2010-12-23 12:14:55
這只是一個創建多個連接的測試,並且所有連接都執行相同的查詢:) – 2010-12-23 13:13:07
- 1. 關閉連接是否自動關閉語句和結果集?
- 2. Websocket連接自動關閉?
- 3. 關閉窗體關閉SQL連接(C#)
- 4. ActiveRecord執行SQL需要關閉連接嗎? DEPRECATION警告:數據庫連接不會自動關閉
- 5. Excel關閉時會關閉ADODB連接嗎?
- 6. 我的會議會自動關閉嗎?
- 7. 執行後groovy.sql.Sql.firstRow會關閉連接嗎?
- 8. 如何讓WCF自動關閉連接?
- 9. .net SqlCommand.ExecuteReader關閉連接嗎?
- 10. C# - SQL連接不會關閉
- 11. peewee模型會自動關閉連接嗎?
- 12. Laravel會自動關閉數據庫連接嗎?
- 13. iOS webbrowser會自動關閉websocket連接嗎?
- 14. 在php中die()會自動關閉MYSQL連接嗎?
- 15. 連接不會關閉(VB)
- 16. 強制關閉SQL連接
- 17. 關閉SQL連接(NHibernate)
- 18. NodeJS - SQL Server連接關閉
- 19. 關閉連接
- 20. Scala會自動關閉InputStream嗎?
- 21. Linux會自動關閉文件嗎?
- 22. 關閉DataInputStream也會關閉FileInputStream嗎?
- 23. mongodb是否自動關閉連接?
- 24. NetworkStream的連接自動關閉
- 25. 連接丟失時自動關閉PuTTY
- 26. 數據庫連接自動關閉
- 27. NodeJS + mysql - 自動關閉池連接?
- 28. firebase關閉呼叫關閉連接
- 29. 關閉或不關閉Oracle連接?
- 30. 自動關閉結果集
我認爲在數據庫方面他們會超時。大多數數據庫都有默認的連接超時。 – CoolBeans 2010-12-23 06:40:26