问题的1º部分:
我的应用程序从 TCP 套接字接收大量数据,我需要将数据存储在 MySQL 数据库中。现在,我只是在每次我想查询数据库时创建一个新连接,并且在查询之后我关闭连接。
我只有一个线程来接收数据并存储在数据库中,但我还有其他线程正在查询数据库(它们也创建新连接),但这些线程速度较慢(查询更复杂)。问题是:
- 当我只有接收和存储数据的线程时,数据的存储速度相对较快(我认为它可以更快);
- 当我还有查询速度较慢的线程时,存储变得太慢......
连接是否可能阻塞?(每次我想访问数据库时,我都会创建和关闭连接)。
问题的2º部分:
在我解决上述问题的研究中,我看到我应该使用连接池,因为这可以提高对数据库的访问时间。
所以我发现了 5 种可能性来实现这一点:
- http://commons.apache.org/dbcp/
- http://www.mchange.com/projects/c3p0/
- http://www.javamex.com/tutorials/synchronization_concurrency_semaphore2.shtml
- http://www.snaq.net/java/DBPool/
- http://www.roseindia.net/tutorial/java/jdbc/jdbcconnectionpooling.html
由于我没有时间测试它们中的每一个,我想知道哪一个(在您看来)可以提供更好的性能和更少的问题需要解决......(我在网络上的某个地方看到了dbcp
可以提供更多问题的地方而不是解决它们...)