2018--5-21 批量插入大数据的一点优化,小白一个

使用JDBC插入大量数据时,约20w条insert语句,最开始的代码:

Connection conn = null;
        Statement st = null;
        try{
            conn = dba.getConnection();
            st = conn.createStatement();
            long start = System.currentTimeMillis();
            if (batchSql.endsWith("/r/n"))
            {
                batchSql.subSequence(0, batchSql.length() - 2);
            }
            String[] datas = batchSql.split(m_strLines);
            for(int i=0;i<datas.length;i++){
                st.addBatch(datas[i]);
                if(i%4000 == 0){
                    st.executeBatch();
                   
                }
            }
            st.executeBatch();
           
            logger.info("-----------------------批量执行sql所需时间为:--"+(System.currentTimeMillis()-start)+"   毫秒");
        }catch(Exception e){
            logger.info("------------------------>批量执行sql方法出错了"+e);
        }finally{
            dba.close(st);
            dba.close(conn);

        }

执行的时间超乎想象,在网上查找优化方法,

加上conn.setAutoCommit(false);,在每次批量执行完提交一次,20万的数据仅仅用了37s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值