专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础学习:java批处理教程

Java基础学习:java批处理教程

更新时间:2020-04-01 13:50:12 来源:动力节点 浏览1914次


  在处理一些与数据库相关的操作的时候,通常把一些操作合并能够起到优化的效果,并且数量越大,批量执行的效率比一条一条执行的效率要快的多。


  批量插入比单次插入快


  比如有十条数据单条执行需要操作十次数据库,批量的话执行一次数据库的操作就可以。


  对应的sql语句:


  单次:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);


  INSERT INTO table_name (列1, 列2,...) VALUES (值3, 值4,....);


  批量:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....),(值3, 值4,....);


  大家可以用sql直接去数据库执行做一下对比,在数据库越大的时候,他们的速度对比越明显。


  我原来做过sql数据导入,同样的数据不同的sql,单次插入的执行了800s,分批的50s内完成。这只是一个大概的印象,大家可以自己做尝试。


  批量插入的缺陷


  优点是可以一次性插入很多条数据,但是缺点也有,这个很多条数据是有限制的,不能无限大,数据库太多的话数据库直接报错,导入执行失败,我记得提示的是(这条sql执行数据大于2M,无法执行),大概这样的提示。


  所以为了效率,也为了保证程序的正常执行,就需要分批的批量插入。


  比如一次要插入8000条数据,数据库受不了,那就一次插入500条。


  分批代码

  //分批处理
  if (CollectionUtils.isNotEmpty(allList)) {
  int pointsDataLimit = 500;//定义分批大小
  List newList = new ArrayList();
  for (int i = 0; i < allList.size(); i++) {//分批次处理
  newList.add(allList.get(i));
  if (pointsDataLimit == newList.size() || i == allList.size() - 1) {
  userDao.insertAllBy(newList);//批量插入
  newList.clear();
  }
  }
  }

  总结:优化既要保证效率,更要注重正确性。


Java基础学习:java批处理教程


  以上就是动力节点java培训机构的小编针对“Java基础学习:java批处理教程”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>