JDBC多线程插入可以吗?

2024-04-28

我目前正在开发一个 Java 项目,我需要准备一个大的(对我来说)mysql 数据库。我必须使用 Jsoup 进行网页抓取并将结果存储到我的数据库中。据我估计,我将大约插入 1,500,000 到 2,000,000 条记录。在我的第一次试验中,我只是使用循环来插入这些记录,我花了一周的时间才插入了大约 1/3 的所需记录,我认为这太慢了。是否可以使该过程成为多线程,以便我可以将记录分为 3 组,例如每组 500,000 条记录,然后将它们插入到一个数据库(具体是一个表)中?


多线程在这里不会帮助你。您只需将争用瓶颈从应用程序服务器移至数据库即可。

相反,请尝试使用批量插入,它们通常会使此类事情的速度加快几个数量级。看JDBC 教程中的“3.4 进行批量更新” http://java.sun.com/developer/Books/JDBCTutorial/index.html.

Edit:正如@Jon评论的那样,您需要将网页的获取与插入数据库分离,否则整个过程将以最慢的操作速度进行。您可以使用多个线程来获取网页,将数据添加到队列数据结构中,然后使用单个线程使用批量插入将队列排入数据库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC多线程插入可以吗? 的相关文章

随机推荐