Java MySql connector/J中的autoReconnect和autoReconnectForPools之间有什么区别?
在MySql的配置参考中,对autoReconnect属性的使用发出了警告清空。我按照说明增加了服务器的等待超时时间。因为我正在使用DBCP,所以在阅读了Stackoverflow上的几篇文章后,我正在考虑转移到c3po,这篇文章是针对DBCP的,使用autoReconnectForPools属性可以吗?在DBCP或任何连接池下启用时,它实际上会做什么?autoReconnect将向客户端抛出一个SQLException,但会尝试重新建立连接 autoReconnectForPools将在每次SQL执行之前尝试ping服务器 在过去,我对dbcp有很多问题,尤其是断开连接。大多数问题都是通过搬到美国来解决的。请注意,mysql驱动程序具有c3p0 com.mysql.jdbc.integration.c3p0.MysqlConnectionTester的连接测试程序Java MySql connector/J中的autoReconnect和autoReconnectForPools之间有什么区别?,java,mysql,jdbc,apache-commons-dbcp,Java,Mysql,Jdbc,Apache Commons Dbcp,在MySql的配置参考中,对autoReconnect属性的使用发出了警告清空。我按照说明增加了服务器的等待超时时间。因为我正在使用DBCP,所以在阅读了Stackoverflow上的几篇文章后,我正在考虑转移到c3po,这篇文章是针对DBCP的,使用autoReconnectForPools属性可以吗?在DBCP或任何连接池下启用时,它实际上会做什么?autoReconnect将向客户端抛出一个SQLException,但会尝试重新建立连接 autoReconnectForPools将在每次S
此外,您可能还想查看以下内容:您确定正确使用了DBCP吗 根据,它应该能够很好地处理超时,这要感谢默认值testOnBorrow=true在使用之前测试连接,如果失败,它将从池中删除,我们将尝试获得一个新的连接 您需要做的唯一一件事是确保将validationQuery属性配置为非空字符串,例如,为MySQL数据库选择0是关于每使用一个DB的不同validationQuery值的帖子。MySQL的autoReconnect功能已被弃用,因为它有许多问题。请参阅:official autoReconnectForPools与autoReconnect没有什么关系,它更多地与autoCommit和reconnectAtTxEnd有关-当所有3个都为真时,它将在每个事务结束时ping服务器,并在需要时自动重新连接 DBCP的连接验证是不完善的——即使设置了testOnBorrow,它有时也会从池中返回断开的连接,更不用说在每次借用之前测试连接的效率非常低
根据,HikariCP似乎是一个更好的池实现,因为它能够使用JDBC4 isValid API,这比运行测试查询快得多,并且专门设计为永远不会向客户端应用程序返回断开的连接。通常,HikariCP或Tomcat DBCP等更现代的池将使用Connection.isValid方法。还有一个只有MySQL才能识别的特殊查询,/*ping*/必须正好是这个查询,这将导致MySQL对服务器使用轻量级ping。我认为isValid实现应该更高效,因为/*ping*/查询仍然必须由解析器处理。