mysql数据库批量快速插入

在处理近500w条数据的批量插入时,通过单条插入和多线程插入的方法效率低下。最终采用PreparedStatement的预编译SQL批量插入(batch)方法进行优化。测试结果显示,2k行数据插入耗时约30秒,而2w行数据插入未经优化需16分钟。通过禁用自动提交并手动控制事务,2k行插入时间降至260ms,2w行插入仅需1.4秒。在使用手动提交时,需要注意错误处理并适时回滚事务。
摘要由CSDN通过智能技术生成

最近在处理一批数据,需要从库中表里的字段进行处理然后导出到一个新表中。不过这个表的数据量有近500w条。这数据量出现的的问题是需要处理的时间好长。
首先想到,一句一句的插入,大数据量处理时间好长,忽略。
其次想到,多线程插入,想到数据库连接是需要同步的所以感觉用处不大。
最后想到,使用 PreparedStatement 预编译sql 进行批量插入 batch 处理。
好吧,现在就进行批处理插入测试。
1、使用简单的 batch

public static void main(String[] args) {
        Connection conn = getConn(lsqlurl, luser, lpassword);
        long startTime = System.currentTimeMillis();
        try {
            PreparedStatement pst = conn.prepareStatement("insert into testmy (id,name,age) values (?,?,?)");
            for (int i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值