如何实现百万级的数据快速入库,在入库前判断对应的记录是否已经存在, 如果存在则跳过该条记录,并且实现入库序列自增。
其实百万级还好吧,不过这是批量操作数据,一个比较大的优化点是开启事务,不能每插入一条记录就提交一次。然后又考虑到如果所有数据都在同一个事务里完成,万一最后几条数据有点啥问题,然后之前的操作就可能回滚,所有建议比如1w条提交一次事务。这个就看作者自己控制了
如果在入库的时候嫌慢,你可以分段插入,比如三百万,你可以一到一百万的数据放一起,一百万到二百万放一起,然后多进程提交,比如三百万就开三个进程。这其中有很多小技巧,比如楼上说的开事务最后提交,还有最后生成ID那个思路都挺好的。
15 回答7.5k 阅读
3 回答7.4k 阅读✓ 已解决
5 回答5k 阅读
4 回答2.7k 阅读
3 回答5.5k 阅读
2 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
如果想速度快,有几点建议:
1、目标表所有主键和索引禁用
2、使用sqlldr导入,可以指定从序列生成值,如:SWAP_ID “SEQ_BASE_MATERIELSWAPINFO.NEXTVAL”
根据以前的测试,100万记录应该在1-2分钟内完成
导入后启用主键和索引,然后自己写个删除重复记录的语句
可以参考我以前用sqlldr的记录:sqlldr记录