• [效率测试]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万数据

  • 相关阅读:
    Linux网络套接字之TCP网络程序
    lvgl页面管理 简单实现
    Mindomo Desktop for Mac(免费思维导图软件)下载
    RS485通讯方式-详解
    程序环境和预处理
    System verilog从Testbench中dump出所需要的数据代码
    (五)admin-boot项目之整合统一异常和统一返回值
    E044-服务漏洞利用及加固-利用redis未授权访问漏洞进行提权
    java计算机毕业设计校园二手交易平台源程序+mysql+系统+lw文档+远程调试
    java数据结构与算法刷题-----LeetCode35:搜索插入位置
  • 原文地址:https://blog.csdn.net/pingzhuyan/article/details/125523253