泪奔的mysql之数据库批量插入

本文通过Java演示了如何进行大规模数据批量插入的性能测试。利用PreparedStatement和批处理操作,在关闭自动提交的情况下,向数据库中批量插入50万条记录,并记录整个过程所消耗的时间。

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

直接上代码

public class pretInsertTest {
/*
* 批量插入时间测试
*/

public static void main(String[] args) {
    Connection  conn = null;
    PreparedStatement  ps = null;
    Long  startTime = System.currentTimeMillis();
    try {
        Class.forName(Config.drivername);
        conn = DriverManager.getConnection(Config.url_ike,Config.username,Config.password);
        // 关闭事务自动提交
        conn.setAutoCommit(false);
        // 开始时间

        String sql = "insert into test (name,age,sex,num,time) values(?,?,?,?,?)";
        String time = DateTimeUtil.getCurrDateTimeStrNew();
      ps = conn.prepareStatement(sql);
        for(int i = 0;i<500000;i++){
            ps.setString(1,"隔壁老王");
            ps.setInt(2,20);
            ps.setString(3,i%2 == 0 ?"男":"女");
            ps.setInt(4,i);
            ps.setString(5,time);
            ps.addBatch();

            if(i%1000 == 0){
                ps.executeBatch();
                conn.commit();
                System.out.println("来一波");
            }
        }
        ps.executeBatch();

    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            ps.close();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    Long  endTime = System.currentTimeMillis();
    SimpleDateFormat  sdf = new SimpleDateFormat("HH:mm:ss:SS");
    TimeZone  tz = sdf.getTimeZone();
    tz.setRawOffset(0);
    sdf.setTimeZone(tz);
    System.out.println("用时:"+sdf.format(new Date(endTime - startTime)));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值