gpt4 book ai didi

java - 保持数据库连接打开还是在每次需要时重新打开它?

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:42 26 4
gpt4 key购买 nike

我知道这类问题已经被问过几次了,我读了其中的一些,但并没有变得更聪明。我的 Java 应用程序通过 SSH 隧道通过 JDBC 连接到数据库服务器。隧道在开始时打开一次。开始时,每次使用时我都会打开数据库连接。由于应用程序的变化,我需要在启动时打开连接,并决定在我的应用程序关闭之前保持连接。当我关闭应用程序时,有时(并非总是如此)会出现以下错误:

 - Could not retrieve transation read-only status server

java.sql.SQLException: Could not retrieve transation read-only status server
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 369.901 milliseconds ago. The last packet sent successfully to the server was 8 milliseconds ago.
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

这可能是因为始终打​​开数据库连接吗?我只在短时间内测试应用程序。它将全天运行在 4 台计算机上。那么我可以更频繁地期待这个错误吗?该连接每隔几分钟使用一次,因此保持打开状态应该性能更高,但可能在休息期间半小时不使用。

你会推荐我做什么?始终重新打开连接或保持原样并在出现此错误时找到解决方法?您是否知道为什么会出现此错误?

只要询问您是否需要更多错误日志、数据库代码或任何您需要的东西。

谢谢!

最佳答案

我会说是的,您的问题可能是由于您打开了持久连接。

我不久前接管了一个网站,我之前的那个人有同样的想法:打开一个连接,在需要时通过它发送查询,并且永远不要关闭它。在我接管网站一个月后,数据库再也不会像这样返回查询结果了。

作为一般经验法则和良好的编程习惯,请务必自行清理。如果您不使用变量,请将其设置为 null 并将其删除。不使用连接?终止它。这在 Java 中不如在 C++ 中那么突出,因为 Java 会为您完成大部分清理工作。

关于java - 保持数据库连接打开还是在每次需要时重新打开它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com