【发布时间】:2012-12-10 10:02:48
【问题描述】:
我正在开发一个多线程应用程序,当有人连接到我的套接字时会创建线程。每个连接创建一个新线程,每个线程使用 JDBC 对 MySQL 数据库进行查询。我想知道从我的不同线程到 MySQL 的多个连接是否会导致我的应用程序出现任何问题或对 MySQL 数据产生负面影响。
【问题讨论】:
标签: java mysql multithreading
我正在开发一个多线程应用程序,当有人连接到我的套接字时会创建线程。每个连接创建一个新线程,每个线程使用 JDBC 对 MySQL 数据库进行查询。我想知道从我的不同线程到 MySQL 的多个连接是否会导致我的应用程序出现任何问题或对 MySQL 数据产生负面影响。
【问题讨论】:
标签: java mysql multithreading
相反,您应该始终以多线程方式连接到数据库。或者说真的,一种混合时尚!
考虑一下这种情况,当您的应用程序成为全球热门并且您每分钟获得 100k 次点击时,您将拥有大量线程 - 即每个连接一个线程,这将破坏您的应用程序、应用程序服务器和您的数据库... :-)
相反,您可以实现一个数据库连接池,您的线程可以从中借用并在完成后返回。有几个不错的开源项目可供选择,C3PO 和 Commons DBCP 只是其中两个。
希望对你有帮助,
【讨论】:
线程数多于线程数并没有什么好处 cpu/硬件线程的实际数量。如果有的话,更多线程 创建更多开销,这将有效地减慢您的应用程序 下来。
线程提供的东西相对容易做更多事情 同样的事情,但过了一段时间它开始碰壁,人们不得不开始考虑其他潜在的解决方案。
如果您希望您的应用程序具有可扩展性,现在是时候 开始考虑如何横向扩展您的应用程序,即 多个系统分担负载的分布式解决方案。
与其在单个系统上使用更多线程,不如从以下方面考虑 工作队列和工作线程分布在 N 个系统中。
【讨论】: