【发布时间】:2014-12-05 15:03:49
【问题描述】:
我有一个 java 进程,它启动了大约 60 个线程,每个线程都访问一个 MySql 数据库。
我会从使用像 C3P0 这样的连接池中受益吗?还是仅适用于 Web 应用程序(可扩展到大量用户)?
今天我们有长期存在的 JDBC 连接(每个线程一个),而我的计划是在每次 SQL 查询/插入之前从连接池中获取一个连接。
我想知道这是否会使我们的应用程序更稳定?另外,如果我将其配置为匹配数据库中的最大连接数,线程是否必须等到有空闲连接?文档不是很清楚(至少对我来说不是)。
感谢任何指导!
【问题讨论】:
-
我不太了解这个应用程序的架构。你能拼出来吗?我从您的描述中得到的是,这是一个带有数据库后端的服务器,您可以使用某些客户端通过 Internet 联系它。如果是这样的话,这和“Web 应用程序”之间的唯一区别是它在哪个端口上运行,不是吗?
-
问题不是关于架构,而是关于连接池。 (粗鲁的讽刺评论已删除)。与长时间运行的 JDBC 连接相比,Java 是否会从使用连接池中受益的问题(如问题所述,每个线程一个)。 Web 应用程序以完全不同的方式(通常)扩展,您可以拥有 1000 或更多用户。在这里我知道我只有一个进程,但有很多线程。我还能从使用连接池中受益吗?
-
如果在池中设置最大连接数,池将不再创建。如果给定时间点的所有连接都被其他线程占用,则下一次检索一个连接的调用将阻塞。
-
终于有人读到了这个问题。谢谢!
标签: java multithreading jdbc pool