是的,您应该考虑重新使用连接,而不是每次都创建一个新的连接。通常的过程是:
- 对数据库可以合理地处理多少个同时连接进行一些猜测(例如,在数据库机上,每个CPU以2个或3个CPU开始,直到您发现它太少或太多-这将取决于磁盘的数量)绑定您的查询)
- 创建一个包含这么多连接的 池 :本质上是一个类,您可以在每个方法的开头请求“下一个空闲连接”,然后在每个方法的末尾“传递”回池
- 如果一个可用,您的getFreeConnection()方法需要返回一个空闲连接,否则(1)创建一个新连接,其数量不超过您决定允许的最大连接数量,或者(2)如果已经创建了最大数量的连接,等一个免费
- 我建议使用Semaphore类来管理连接。我的网站上确实有一篇简短的文章,内容涉及使用信号量管理资源池的示例,我认为您可以适应您的目的
一些实际考虑:
- 为了获得最佳性能,您需要小心, 不要在没有真正使用连接来运行查询的同时“挂住”连接 。如果您从池中建立一次连接,然后将其传递给各种方法,则需要确保您不会意外地这样做。
- 不要忘记将您的连接返回到池中!(尝试/最后是您的朋友在这里…)
- 在许多系统上,您 无法使连接永远保持打开状态 :操作系统会在一段时间后将其关闭。因此,在“将连接返回到池”方法中,您需要考虑 已经存在很长时间的“退休”连接 (建立某种记忆机制,例如,通过在实际的JDBC周围使用 包装器对象 可用于存储指标的连接对象
- 您可能要考虑使用准备好的语句。
- 随着时间的流逝,您可能需要 调整连接池的大小



