首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySql connector/J中的autoReconnect和autoReconnectForPools有什么不同?

MySql connector/J中的autoReconnect和autoReconnectForPools有什么不同?
EN

Stack Overflow用户
提问于 2009-02-09 03:28:54
回答 3查看 21.6K关注 0票数 19

在MySql的connector J driver的配置参考中,在使用autoReconnect属性时发出了一个购买者警告。我按照说明操作并增加了服务器的wait_timeout。由于我正在使用DBCP (在阅读了几篇关于栈溢出攻击DBCP的帖子后,我正在考虑迁移到c3po ),可以使用autoReconnectForPools属性吗?当在DBCP或任何连接池中启用它时,它实际上做了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-02 14:34:32

autoReconnect将向客户端抛出一个SQLException,但会尝试重新建立连接。

autoReconnectForPools将尝试在每次执行SQL之前ping服务器。

在过去,我对dbcp有很多问题,特别是断开连接。大多数都是通过迁移到c3p0来解决的。请注意,mysql驱动程序具有用于(com.mysql.jdbc.integration.c3p0.MysqlConnectionTester). c3p0的连接测试器。

此外,您可能还想查看以下内容:Connection pooling options with JDBC: DBCP vs C3P0

票数 16
EN

Stack Overflow用户

发布于 2015-04-07 03:07:16

MySQL的autoReconnect功能被弃用,因为它有很多问题(参考:官方documentation)。

autoReconnectForPoolsautoReconnect没有什么关系,它与autoCommitreconnectAtTxEnd有更多的关系-当这3个都是true时,它会在每个事务结束时ping服务器,并在需要时自动重新连接。

DBCP的连接验证并不完美-即使设置了testOnBorrow,它有时也会从池中返回断开的连接(更不用说在每次借用之前测试连接是非常低效的)。

根据this article的说法,HikariCP似乎是一个更好的池实现,因为它能够使用JDBC4 isValid() API,这比运行测试查询快得多,并且经过专门设计,永远不会向客户端应用程序返回断开的连接。

票数 9
EN

Stack Overflow用户

发布于 2012-06-06 13:32:43

您确定您正在正确地使用DBCP吗?

根据short configuration notes的说法,它应该能够很好地处理超时,这要归功于testOnBorrow=true的默认值(在使用之前测试连接,如果连接失败,它将从池中删除,我们将尝试获得一个新的连接)。

您唯一需要做的就是确保将validationQuery属性配置为非空字符串,例如对于MySQL数据库,"SELECT 0“(here是关于每个使用的DB的不同validationQuery值的帖子)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/527061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档