Pet*_*son 5 java multithreading pool jdbc
我有一个java进程,它启动大约60个线程,每个线程访问一个MySql数据库.
使用像C3P0这样的连接池会有好处吗?或者它仅适用于Web应用程序(可扩展到许多用户)?
今天我们有长期存在的JDBC连接(每个线程一个),我的计划是在每次SQL查询/插入之前从连接池获取连接.
我想知道这是否会使我们的应用程序更稳定?另外,如果我将其配置为匹配数据库中的最大连接数,那么线程是否必须等到有空闲连接?文档不是很清楚(至少不适合我).
任何指导表示赞赏!
撇开应用程序在哪里运行以及数据库是否暴露在互联网上的问题不谈,我认为添加连接池不会解决您的问题,但它可以改善您的应用程序。
我猜测当您使用数据库连接时会发生虚假错误。我不知道您的特定错误,但听起来像是某种连接失败,如果您与数据库之间的链接不可靠或速度缓慢,则可能会发生这种情况。池在这里没有帮助,因为它是一个连接池。一旦获得连接,您不知道它是否会因同样的原因而失败。
但是,如果您确实使用池,则不必长时间保持连接打开。使用池时,您需要一个连接,如果没有可用的连接,则会创建一个连接。返回连接后,如果一段时间没有使用,它可能会被(断开连接)并丢弃。除非您的应用程序持续使用每个连接,否则这对您的应用程序和服务器都有好处。
即使在这里,您也必须做一些额外的事情来处理失败。假设您从池中获取了一个连接,但它随后失败了。您可以关闭它,并向池请求一个新连接(池中应该有一些 API 可以删除该连接。)新连接可能处于更好的状态。
最后,考虑也许不要通过 Internet 使用 JDBC。正如其他人可能指出的那样,这会让自己面临不必要的风险。也许使用某种网络服务通过安全的 https 和更受限制的接口来读取和写入数据。
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |