mysql中的批量操作比逐条操作性能高多少

逐条插入

逐条插入10万条数据到本地mysql数据库(mac本、16G)耗时184474 ms

@Test
    public void testCreate() {
        long initId = 3000L;
        long start = System.currentTimeMillis();
        System.out.println("开始时间:"+ start);
        for (int i = 0; i < 100000; i++) {
            long id = initId + i;
            Org org = new Org();
            org.setId(id);
            org.setOrgName("this is org:" + id);
            org.setShowFlag(EnumShowFlag.SHOW);
            org.setCreator(-1L);
            org.setCreateTime(new Date());
            org.setUpdator(-1L);
            org.setUpdateTime(new Date());
            org.setDelFlag(false);
            orgMapper.create(org);
        }
        System.out.println("插入时间:"+ (System.currentTimeMillis()-start));
    }

批量插入

批量插入10万条数据到本地mysql数据库(mac本、16G)耗时16096 ms

@Test
    public void testCreateBatch() {
        long start = System.currentTimeMillis();

        int totalPage = PageUtil.totalPage(100000, 20);
        for (int i = 0; i < totalPage; i++) {
            int begin = i * 20 + 3000;
            int end = (i + 1) * 20 + 2999;

            List<Org> list = new ArrayList(20);
            for (long j = begin; j <= end; j++) {
                Org org = new Org();
                org.setId(j);
                org.setOrgName("this is org:" + j);
                org.setShowFlag(EnumShowFlag.SHOW);
                org.setCreator(-1L);
                org.setCreateTime(new Date());
                org.setUpdator(-1L);
                org.setUpdateTime(new Date());
                org.setDelFlag(false);
                list.add(org);
            }
            orgMapper.createBatch(list);
        }
        System.out.println("插入时间:"+ (System.currentTimeMillis()-start));
    }

逐条更新

逐条更新10万条数据到本地mysql数据库(mac本、16G)耗时180437ms

@Test
    public void testUpdate() {
        long start = System.currentTimeMillis();
        for (long i = 3000; i < 103000; i++) {
            Org org = new Org();
            org.setId(i);
            org.setOrgName("this is org-1:" + i);
            orgMapper.updateBySelective(org);
        }
        System.out.println("修改时间:"+ (System.currentTimeMillis()-start));
    }

批量更新

批量更新10万条数据到本地mysql数据库(mac本、16G)耗时29997 ms

@Test
    public void testUpdateBatch() {
        long start = System.currentTimeMillis();
        int totalPage = PageUtil.totalPage(100000, 20);
        for (int i = 0; i < totalPage; i++) {
            int begin = i * 20 + 3000;
            int end = (i + 1) * 20 + 2999;

            List<Org> list = new ArrayList(20);
            for (long j = begin; j < end; j++) {
                Org org = new Org();
                org.setId(j);
                org.setOrgName("this is org-2:" + j);
                list.add(org);
            }
            orgMapper.updateBatchBySelective(list);
        }
        System.out.println("修改时间:"+ (System.currentTimeMillis()-start));
    }
posted @ 2021-01-20 10:57  coding_疯魔  阅读(432)  评论(0)    收藏  举报
编辑推荐:
· 于是转身独立开发者
· C#.Net筑基-泛型T & 协变逆变
· dotnet 代码调试方法
· DbContext是如何识别出实体集合的
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
阅读排行:
· 我救了一个网站,性能提升了1500 多倍!
· 免费开源 .NET OpenCV 迷你运行时全平台发布
· 经验贴!万字总结网卡丢包及ping延迟等网络问题排查思路
· 用好索引的10条军规
· 一个static关键字引发的线上故障:深度剖析静态变量与配置热更新的陷阱
点击右上角即可分享
微信分享提示