多线程将亿万数据写入mysql_我的多线程————读取百万条Excel数据,写入到数据库...

本文探讨了如何高效地从Excel读取大量数据并将其多线程写入MySQL数据库,避免内存溢出。首先,通过poi的命令触发模式解决读取时的内存问题,然后采用生产者消费者模型,线程A读取数据放入队列,线程B从队列取出数据批量写入数据库,显著提升了处理速度。
摘要由CSDN通过智能技术生成

问题:如何高效的读取百万条Excel数据到数据库?

问题拆解:1.如何读取百万条Excel数据?poi用户模式会出现内存溢出啊

2.读取到的Excel数据存储在哪里?100万条数据放在内存不是一件很恐怖的事情吗?

3.如何高效的将数据写入到数据库?多线程如何使用?

方案1:poi的命令触发模式解决读取的时候内存溢出问题、读取到的数据放到内存中、内存中通过forkjoin工具任务拆解,加入到队列

深入思考:1》每次都要等待读取完数据,才能进行其他操作,读取本身就花费了9秒时间 2》100万条数据很消耗内存啊

方案2:分2个线程:线程A和线程B,线程A负责读取Excel数据,线程B负责写入到数据库,线程A和线程B如何配合工作呢?多线程的生产消费者模式

最终核心代码附上:

poi工具类代码:

213793161aa2e9425bfb0fd168f08e12.png

读请求使用的是poi的命令模式,读取只负责向list中添加数据,无上限

f7b8aa4b20bbbfd0e005309113e14d82.png生产消费模式的核心代码

5a52e2b600c89603e46610ddba3b1e53.png

使用线程的工厂模式,将写请求加入到队列

e3a7c7888e197947d4b66f5fddd60d84.png

队列中,不断拿取写请求,执行

99a5cdd3be371e720da49284c59c7e27.png

写请求最终的执行方法

温馨提示:数据库的操作可以使用批处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值