首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有在签入或签出上进行测试的c3p0连接池

没有在签入或签出上进行测试的c3p0连接池
EN

Stack Overflow用户
提问于 2017-06-28 15:40:23
回答 1查看 1.8K关注 0票数 2

来自c3p0 文档

对于某些应用程序来说,高性能比偶尔发生数据库异常的风险更重要。在默认配置中,c3p0根本不进行连接测试。设置相当长的idleConnectionTestPeriod,而不对签出和签入进行测试是一种优秀的、高性能的方法。

如果我正确地理解了c3p0配置属性的含义,如果数据库在短时间内不可用,然后恢复(例如,重新启动或出现网络问题),如果c3p0中汇集的连接的使用率相当高,因此没有任何连接比idleConnectionTestPeriod空闲时间长,那么这些连接中的任何一个都不会被测试有效性,并且所有使用它们的尝试都将失败。基本上,连接池不会从db不可用性中自动恢复。

在文档中,这是一种很好的、高性能的方法,但没有警告说连接池失去了从无效连接中自动恢复的能力,还是我误解了相关配置属性的含义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 05:13:16

哈。我写这篇文章,大概是十多年前,你是对的,这不是个好建议。最初,c3p0中的连接测试通常非常昂贵(因为对于dbms/驱动程序独立性和完全有效性测试的确定性,它使用了昂贵的元数据getTables(.),我强烈建议人们确保在签入和空闲测试中进行异步测试。一旦preferredTestQuery和jdbc4 Connection.isValid()使高效可靠的测试成为可能,我就修改了文档以消除同步检查的阻碍。但很明显,这种情况依然存在,即使是在过去的日子里,这也是不好的建议。在实践中,如果您在签出期间没有进行测试,我建议对签入和空闲测试进行异步测试,以及通常情况下适度频繁的空闲测试(30秒-ish),以减少应用程序看到陈旧连接的可能性,以及在中断后重新刷新连接之前的延迟。

我会继续修改这个的。谢谢你的接球。

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

https://stackoverflow.com/questions/44807078

复制
相关文章

相似问题

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