当前位置: 首页 > 面试题库 >

Java中有多少个JDBC连接?

公孙和怡
2023-03-14
问题内容

我有一个由15种方法组成的Java程序。并且,这些方法在程序执行过程中非常频繁地被调用。目前,我正在每种方法中创建一个新连接并调用它们上的语句(数据库在网络上的另一台计算机上设置)。

我想知道的是:我应该只在main方法中创建一个连接并将其作为参数传递给需要连接对象的所有方法,因为这将大大减少程序中的连接对象数量,而不是创建在每种方法中都非常频繁地关闭连接。

我怀疑我在当前设计中不能非常有效地利用资源,并且考虑到该程序将来可能会增长很多,因此还有很多改进的余地。


问题答案:

是的,您应该考虑重新使用连接,而不是每次都创建一个新的连接。通常的过程是:

  • 数据库可以合理地处理多少个同时连接进行一些猜测(例如,在数据库机上,每个CPU以2个或3个CPU开始,直到您发现它太少或太多-这将取决于磁盘的数量)绑定您的查询)
  • 创建一个包含这么多连接的 :本质上是一个类,您可以在每个方法的开头请求“下一个空闲连接”,然后在每个方法的末尾“传递”回池
  • 如果一个可用,您的getFreeConnection()方法需要返回一个空闲连接,否则(1)创建一个新连接,其数量不超过您决定允许的最大连接数量,或者(2)如果已经创建了最大数量的连接,等一个免费
  • 我建议使用Semaphore类来管理连接。我的网站上确实有一篇简短的文章,内容涉及使用信号量管理资源池的示例,我认为您可以适应您的目的

一些实际考虑:

  • 为了获得最佳性能,您需要小心, 不要在没有真正使用连接来运行查询的同时“挂住”连接 。如果您从池中建立一次连接,然后将其传递给各种方法,则需要确保您不会意外地这样做。
  • 不要忘记将您的连接返回到池中!(尝试/最后是您的朋友在这里…)
  • 在许多系统上,您 无法使连接永远保持打开状态 :操作系统会在一段时间后将其关闭。因此,在“将连接返回到池”方法中,您需要考虑 已经存在很长时间的“退休”连接 (建立某种记忆机制,例如,通过在实际的JDBC周围使用 包装器对象 可用于存储指标的连接对象
  • 您可能要考虑使用准备好的语句。
  • 随着时间的流逝,您可能需要 调整连接池的大小


 类似资料:
  • 我们刚刚从dbcp迁移到tomcat jdbc连池。我们在加载中尝试了系统,收到了以下异常: 请注意: 不忙的连接在哪里?忙的数字在这之后一直在下降,但我们仍然没有得到任何连接。 有什么想法吗? 配置: env:ubuntu和tomcat 6. db-mysql

  • 正如我从留档和其他引用中看到的,连接器似乎将使用单个任务实例化,无论通过属性定义的值是多少(tasks.num) 分布式Mongodb Kafka源代码连接器,多任务不工作 Kafka Connect中连接器和任务之间的关系是什么 < li >此属性< code>tasks.num是否会产生任何影响,例如在故障转移等情况下..?比方说,如果< code>tasks.num配置为2,并且一个jdbc

  • 问题内容: 我的朋友给我发了一个问题,他在一次关于字符串对象的Java认证模拟考试中看到了一个问题: 调用此方法时将创建多少个字符串对象?考试给出的正确答案是3。但是我认为是5。 “嗨” “ 5” “ HI5” “H” “H” 我错了吗? 问题答案: String makeStrings() { String s = “HI”; //String literal s = s + “5”; //co

  • 有人知道spring batch framework在尝试将某些数据存储在batch_*表中时使用了多少个连接吗? 我们正试图估计连接池大小,我们知道我们的域数据库需要多少连接,但我们在diff db中有批处理模式,并且希望正确设置池大小,因为我们从池中得到错误,例如无法对象数据库连接

  • 本文向大家介绍Java中有多少个非访问修饰符?,包括了Java中有多少个非访问修饰符?的使用技巧和注意事项,需要的朋友参考一下 Java提供了一些其他修饰符,以提供可见性以外的功能。这些修饰符称为非访问修饰符 静态声明为静态 的成员是类的所有实例所共有的。静态成员是存储在类存储器中的类级别成员。 Final 此修饰符用于限制对变量或方法或类的进一步修改。声明为final的变量的值一旦获得值就无法修

  • 问题内容: 我正在考虑构建一个非常大的Java类,Java类可以具有的方法数量是否有限制?它可以用于数百万种方法吗? 更新:是的,目的是制作“神”类。 问题答案: 根据Java类文件规范,限制为 65535 : 4.10 Java虚拟机的局限性 文件格式隐含了Java虚拟机的以下限制: 一个类或接口可以声明的方法的数量由该结构项的大小限制为65535 (第4.1节)。请注意,结构项的值不包括从超类