【问题标题】:Connection pool with single connection vs connection for infrequent queries具有单个连接的连接池与用于不频繁查询的连接
【发布时间】:2017-03-30 19:08:11
【问题描述】:

我正在构建一个 Java 应用程序,它每分钟查询一次我的 SQL 服务器。现在,应用程序正在使用具有单个连接的连接池(最小池大小 1,最大池大小 1)。

我认为池大小为 1 就足够了,因为查询不频繁(如前所述,每分钟一次)。

我是否需要一个连接池,如果答案是肯定的,那么 1 个连接就足够了吗?还是我应该不使用池并每分钟打开一个新连接?

【问题讨论】:

  • 如果您已经设置了池,您希望通过删除它来实现什么?
  • @Kayaman 效率和性能改进以及未来知识。
  • 你真的认为你的效率和表现会以任何明显的方式提高吗? (提示:不会)

标签: java sql connection-pooling


【解决方案1】:

我想给出一些使用连接池的理由,可能有多个连接。不确定您是否正在考虑这种负面情况。

在现实世界中,查询可能会因各种原因运行超过 1 分钟。 您希望应用程序等待挂起的连接吗?或者您对此的预期行为是什么?

此外,如果您使用连接池,则在生成池时会完成数据库连接初始化过程(时间和资源消耗)。当您实际使用数据库连接池时,一些初始化步骤应该已经完成​​,以减少应用程序运行查询时的重复开销。

【讨论】:

  • 把它挂在那个箱子上就好了。
  • @XLordalX 这取决于你想要的行为。如果挂起,则意味着应用程序停止工作并必须重新启动应用程序
【解决方案2】:

使用具有单个连接的连接池(最小池大小 1,最大 池大小 1)。

在这种情况下,看不到使用连接池的任何需要或好处,因为在任何时间点都只有一个连接对象,如果它正在使用,那么其他请求必须等待(或)创建一个非池连接对象。

连接池通常用于节省创建/拆除连接对象的时间/资源。

在您的具体情况下,您可能可以创建一个连接实例,并在完成工作后将其丢弃。

【讨论】:

    【解决方案3】:

    如果您很少访问数据库,那么实际上拥有连接池不会带来任何显着的好处。但是,如果它已经写好了,我会保留它。也许有一天你的应用程序会增长,你会发现池很有用。拥有它并不是一件坏事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 2019-05-29
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 2012-11-08
      相关资源
      最近更新 更多