记一次Mock100万数据到数据库遇到的问题


背景


需要Mock100万数据到数据库。


逐条插入


如果一条一条的插入,模拟1000条,花费了8秒,100万的话,大约花费3个小时,太慢。


批量插入


问题出现

1000条一次进入插入。

consoleLogger.info("This Batch, {}, Time start : {}", batchTotal, s);
orderMapper.batchInsert(orderList);
consoleLogger.info("This Batch, {}, Time elapsed : {}", batchTotal, System.currentTimeMillis() - s);

按照理论,应该比逐条快很多,但是,结果花费了14秒,非常奇怪,开始查找原因。


求助Google

看到两篇有价值的帖子:

http://www.cnblogs.com/aicro/p/3851434.html

http://blog.jobbole.com/85657/

试着改成100条一个批次,很神奇,1000条数据插入,10个循环,总计60毫秒就完成了。难道用MyBatis操作MySQL数据库的批量操作,对于10条一批和1000条一批,性能差别这么大?

不可理解,本着根本上解决问题的思路,继续追根溯源。


加Log

<logger
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值