【问题标题】:Where to close Connection using Connection Pooling in HTTP Servlets在 HTTP Servlet 中使用连接池关闭连接的位置
【发布时间】:2015-04-26 15:55:02
【问题描述】:

哪种方法更好?

a) 在 doXXX() 方法开始时从连接池中获取连接并在结束时关闭。

在整个 doXXX() 方法中使用此连接。这样,它只会从连接池中获取一次连接,但连接将在执行 doXXX() 的整个时间内打开。

b)从连接池中获取每个数据库操作的连接并关闭。

它会为每个数据库操作从连接池中获取连接,但会立即关闭。

【问题讨论】:

  • 没有“JDBC servlet”这样的东西;这些完全是独立的实体。如果你已经从一个连接池中获得了一个连接,就让这个池来处理吧。
  • 这是 HTTP Servlets.. 是的,连接池已经存在..
  • b 的缺点是什么? Tomcat 提供了一个开箱即用的 JDBC 连接池,非常受欢迎。
  • 只是在选项 1 中它只会在开始时获得一次连接,并且所有数据库请求都将使用相同的连接进行处理。从连接池获取连接的开销是多少。

标签: java servlets jdbc


【解决方案1】:

这取决于。从池中获取连接,最坏的情况可能导致昂贵的新连接创建可能很慢。在 DB 调用之间,它会做多长时间?一般来说,每次操作后释放,对于特定进程会减慢速度,但对于其他进程会加快速度,反之亦然。您只需要在大量负载下真正担心这一点。

【讨论】:

  • 假设一直有 100-200 个并发请求... doXXX() 可能需要几毫秒来处理每个 Web 请求.. 对于每个 Web 请求,完成 4-5 db 请求..
  • 无论哪种方式都可能没那么重要,但我想选择 B IMO 会更好一些。例如,如果您的负载翻倍,它的可扩展性会更高。
猜你喜欢
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2015-06-27
  • 2012-03-02
相关资源
最近更新 更多