1

问题的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可以提供更多问题的地方而不是解决它们...)

4

1 回答 1

1

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

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

关于连接池,我使用过BoneCP,发现它非常好且速度快。

于 2013-01-14T15:29:28.183 回答