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


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

    (然后讲个笑话)

    废话不多说 看代码: 

    1. /**
    2. * 一条一条插入 测试10万数据用时差距
    3. */
    4. @Test
    5. void testMillionCount2(){
    6. long startTime = System.currentTimeMillis();
    7. for (long i = 0L; i<100000L; i++){
    8. AixiBuildDamaged dl = new AixiBuildDamaged();
    9. dl.setReceptionId(i);
    10. dl.setImg("https://aisce-root.oss-cn-beijing.aliyuncs.com/img/2022/5/14/dzyStorekeeperOSS/49e7a5fa-2566-40e5-92a3-4ec48cf7ba6a.jpg");
    11. dl.setCreateTime(new Date());
    12. dl.setDelFlag(1);//默认的 这版本获取不到数据库默认值
    13. aixiBuildDamagedMapper.insert(dl);
    14. }
    15. long endTime = System.currentTimeMillis();
    16. System.out.println(endTime-startTime +" ms");
    17. }

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

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

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

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

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

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

     

     

    2. mybatis plus的批量新增方法

    insertBatchSomeColumn() 

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

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

    上测试代码: 

    1. /**
    2. * 测试批量添加十万数据(内存操作)
    3. */
    4. @Test
    5. void testMillionCount() {
    6. long startTime = System.currentTimeMillis();
    7. //破损图片插入破损表
    8. List<AixiBuildDamaged> damagedList = new ArrayList<>();
    9. for (long i = 0L; i < 100000L; i++) {
    10. AixiBuildDamaged dl = new AixiBuildDamaged();
    11. dl.setReceptionId(i);
    12. dl.setImg("https://aisce-root.oss-cn-beijing.aliyuncs.com/img/2022/5/14/dzyStorekeeperOSS/49e7a5fa-2566-40e5-92a3-4ec48cf7ba6a.jpg");
    13. dl.setCreateTime(new Date());
    14. dl.setDelFlag(1);//默认的 这版本获取不到数据库默认值
    15. damagedList.add(dl);
    16. }
    17. if (!aixiBuildDamagedMapper.insertBatchSomeColumn(damagedList))
    18. throw new ConstructionServiceException("添加破损图片失败, 请重试!!!");
    19. long endTime = System.currentTimeMillis();
    20. System.out.println(endTime - startTime + " ms");

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

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

    总结: 

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

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

  • 相关阅读:
    为什么百度百科总是审核不通过?
    python基础之字典的访问
    计算机毕业设计 SSM+Vue线上购药系统 药源购物系统 药物推荐系统 药品详情系统Java Vue MySQL数据库 远程调试 代码讲解
    HTTP协议
    【DNS】Linux上非root用户无法使用/etc/hosts解析条目问题的排查处理
    王道考研——操作系统(第二章 进程管理)
    XWPFTemplate(二)动态生成表格
    【Swift 60秒】13 - Dictionaries
    【eBPF-04】进阶:BCC 框架中 BPF 映射的应用 v2.0——尾调用
    一对一交友App开发指南:从概念到上线的完整路线图
  • 原文地址:https://blog.csdn.net/pingzhuyan/article/details/125523253