【问题标题】:Connection pool API with better performance [closed]具有更好性能的连接池 API [关闭]
【发布时间】:2013-01-14 15:17:14
【问题描述】:

问题的 1º 部分:

我的应用程序正在从 TCP 套接字接收大量数据,我需要将数据存储在 MySQL 数据库中。现在,我只是在每次我想查询数据库时创建一个新连接,并且在查询后我关闭连接。

我只有一个线程来接收数据并存储在数据库中,但我还有其他线程正在查询数据库(它们也创建新连接),但这些线程速度较慢(查询更复杂)。问题是:

  • 当我只有接收和存储数据的线程时,数据的存储速度相对较快(我认为可能更快);
  • 当我还有查询速度较慢的线程时,存储变得太慢...

连接是否可能阻塞? (每次我想访问数据库时,我都会创建和关闭连接)。

问题的2º部分:

在解决上述问题的研究中,我看到我应该使用连接池,因为这样可以提高对数据库的访问时间。

所以我找到了 5 种可能性来实现它:

  1. http://commons.apache.org/dbcp/
  2. http://www.mchange.com/projects/c3p0/
  3. http://www.javamex.com/tutorials/synchronization_concurrency_semaphore2.shtml
  4. http://www.snaq.net/java/DBPool/
  5. http://www.roseindia.net/tutorial/java/jdbc/jdbcconnectionpooling.html

由于我没有时间测试它们中的每一个,我想知道哪一个(在您看来)可以提供更好的性能和更少的问题需要解决...... (我在网上某处看到dbcp 可以提供更多问题而不是解决问题...)

【问题讨论】:

  • 我认为 5 号应该足够了。
  • 你知道线程池是你问题的原因吗。即即使是简单的查询也很慢。如果您发现更复杂的查询速度较慢,则您的池不太可能是问题的根源。
  • 顺便说一句:我在roseindia.net 上阅读的所有材料都写得非常糟糕。它更有可能令人困惑而不是有帮助。
  • 如果你真的“没时间考试”,那你就错了。

标签: java database performance connection pool


【解决方案1】:

根据查询以及您检索或插入的数据量,产生一定的性能影响可能是正常的,从而导致整体性能变慢。

我认为您应该先尝试优化查询/数据库。

关于连接池,我用过BoneCP,发现它非常好和快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2018-04-11
    相关资源
    最近更新 更多