java - 使用 proxool 时,是否需要显式关闭每个 getConnection()?

标签 java connection pooling proxool

我正在编写新的数据库连接代码,并认为我会尝试将 proxool 作为连接池实现者。

通常,程序员会确保每个 DriverManager.getConnection(...) 后跟一个 connection.close()。

但是在使用Proxool时,是否需要close呢?我很困惑,因为:

一个。此处的 proxool 文档 ( http://proxool.sourceforge.net/quickStart.html ) 显示正在调用 close(),但是,

我在某个地方读到 proxool 添加关闭所有的关闭 Hook 程序退出时的连接。

我的程序最关心的是性能(每秒高达 200 次数据库写入),所以我不确定 Proxool 的 getConnection()/close() 将如何影响性能。

我的问题是:

  1. 是否需要 close(),或者我可以依靠 Proxool 来关闭我的连接?

  2. 如果我每次都必须自己显式调用 close(),这不会对性能产生不利影响吗?

提前致谢。

最佳答案

数据库池通常对连接进行子类化/修饰,以便 close() 方法(如果它被应用程序调用)实际上不会关闭连接,而是将其释放回池中。这样做是出于性能原因,因为每次建立新连接的成本都很高,同时也是为了提高您的用户/连接比率。

也就是说,您确实需要调用connection.close(),从而让池知道您不再使用它并且可以使用它到下一个请求它的线程。

关于java - 使用 proxool 时,是否需要显式关闭每个 getConnection()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275767/

相关文章:

java - 如何为多个请求实例 1 个连接类?

java - Tomcat Web 应用程序中与 Java 和 MySQL 的连接池

java - 迭代二维列表并将元素放入哈希表中

java - GAE+Java : Hook textbox to input, div 输出

java - Slackware 12 真的很慢 JDBC

Python MySQL 连接池

SSIS foreach 循环中的 SQL 任务 - 达到最大池大小错误

java - 由较新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 只能识别 52.0 以下的类文件版本

java - JPanels 在同一窗口中加载信息

C 套接字编程 : connect() hangs