java-40万数据迁移之路

本文讲述了通过Java进行40万数据迁移的过程,从最初的串行更新到使用多线程优化,发现并解决问题,如线程池配置、添加索引等。经过一系列优化,最终实现高效的数据迁移,强调了并行处理、减少数据库交互和优化查询的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

听朋友一个需求,根据A库的t1表数据修改B库t2表的数据,有唯一对应关系。

直接采用java代码一条一条去update,一段程序的优化之路。

最初代码如下:

 

程序执行10条发现没问题,开始执行100条,发现太慢了。感觉串行去修改效率不高,考虑多线程。直接上多线程代码

emmmm 是多线程,也有shutdown,代码codeview无误。执行结果太慢了。然后想看看是不是多线程,打印了执行线程id,结果发现怎么是串行的。

原来执行还是单线程,代码位置有误,for循环应该放道提交任务的外面,继续修改

打印结果是多线程,happy,解决了。执行300条数据,执行时间居然3分钟,一分钟更新100条,40万需要……

 

再看也看不出有什么需要修改的地方,想想修改mysql的连接数据,修改线程池数量大小,修改内容添加索引,结果没有任何变化。

看到update想到为什么要先查询在去修改呢。于是去掉查询,执行300条瞬间完成。哇……查询这么耗时。

 

优化思路:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值