批量获取
开发中,有时候难免需要用到类似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遍历着删,但是遍历一次就是与数据库的一次交互。更常见地,每一次删除时,还会有很多相关的级联删除操作,这样更加拉低了页面的相应。有几个地方可以优化:比如采用线程池来执行整