[效率测试]10万数据的插入: 比较不同代码下(多次io和一次io)-10万数据的插入时间, mybatis plus 批量新增

1. 写法最最简单, 需要插入多少次数据库就for多少次数据库

(然后讲个笑话)

废话不多说 看代码: 

 /**
     * 一条一条插入 测试10万数据用时差距
     */
    @Test
    void testMillionCount2(){

        long startTime = System.currentTimeMillis();

        for (long i = 0L; i<100000L; i++){
            AixiBuildDamaged dl = new  AixiBuildDamaged();
            dl.setReceptionId(i);
            dl.setImg("https://aisce-root.oss-cn-beijing.aliyuncs.com/img/2022/5/14/dzyStorekeeperOSS/49e7a5fa-2566-40e5-92a3-4ec48cf7ba6a.jpg");
            dl.setCreateTime(new Date());
            dl.setDelFlag(1);//默认的 这版本获取不到数据库默认值
            aixiBuildDamagedMapper.insert(dl);
        }
        
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-startTime +" ms");
    }

->笑话:  博客都快写完了 它还在执行....

如果要是有1亿个订单 新增 , 估计一年后才能看到去年的订单

我算了一下, 执行10万的新增 

一秒20条左右 预计1.3889小时结束十万数据

计算: 100000/20/60/60 ≈1.3889小时 

一张图看到结果:  一秒实际11条左右 到不了20条(别试了太磨叽了) 

2. mybatis plus的批量新增方法

insertBatchSomeColumn() 

还有第二种方式 实现:  session 等待补充

 使用及配置方法:  点击跳转-> 

上测试代码: 

/**
     * 测试批量添加十万数据(内存操作)
     */
    @Test
    void testMillionCount() {

        long startTime = System.currentTimeMillis();
        //破损图片插入破损表
        List<AixiBuildDamaged> damagedList = new ArrayList<>();

        for (long i = 0L; i < 100000L; i++) {
            AixiBuildDamaged dl = new AixiBuildDamaged();
            dl.setReceptionId(i);
            dl.setImg("https://aisce-root.oss-cn-beijing.aliyuncs.com/img/2022/5/14/dzyStorekeeperOSS/49e7a5fa-2566-40e5-92a3-4ec48cf7ba6a.jpg");
            dl.setCreateTime(new Date());
            dl.setDelFlag(1);//默认的 这版本获取不到数据库默认值
            damagedList.add(dl);
        }

        if (!aixiBuildDamagedMapper.insertBatchSomeColumn(damagedList))
            throw new ConstructionServiceException("添加破损图片失败, 请重试!!!");

        long endTime = System.currentTimeMillis();

        System.out.println(endTime - startTime + " ms");

 执行结果: 具体看电脑性能 42.758秒)

 数据量小的时候 没啥感觉  但是 当数据量大的时候 差距天壤之别 

总结: 

一条一条插入: 一秒20条(略低)左右 预计1.3889小时结束十万数据    

一次插入: 总耗时: 42.758秒 ->10万数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pingzhuyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值