【Java】批量操作优化

本文探讨了Java开发中批量操作的优化策略。对于批量获取数据,建议使用batchSize分批加载,避免一次性加载大量数据。在批量删除场景下,除了避免foreach循环,还可以利用线程池异步处理,或者采用定时任务配合假删除策略。另外,通过in语句进行批量删除是有效手段,但需注意避免一次性处理过多数据导致数据库压力。
摘要由CSDN通过智能技术生成

批量获取

开发中,有时候难免需要用到类似findAll()方法,或者说获取表中所有数据。但是当这个量很大时,一次性从数据库中加载到内存中,明显不理智。这时候可以采用批量取的方式,比如batchSize为500。

    /**
     * 批量获取任务,删除任务
     */
    private void cleanTask() {

        List<String> projectIds = getAllProjectIds();

        if (isNotEmpty(projectIds)) {

            int skip = 0;

            List<TaskVO> res = null;

            do {
                res = taskService.findAll(skip, batchSize);

                if (res == null || res.isEmpty()) {
                    break;
                }

                deleteBatchTask(projectIds, res);

                skip = skip + batchSize;

            } while (res.size() == batchSize);
        }
    }

批量删除

在执行删除操作时,通常我们会foreach遍历着删,但是遍历一次就是与数据库的一次交互。更常见地,每一次删除时,还会有很多相关的级联删除操作,这样更加拉低了页面的相应。有几个地方可以优化:比如采用线程池来执行整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值