使用spring jdbc的batchUpdate功能提高性能
2017-06-06 17:24
274 查看
在spring batch中,我们经常使用spring提供的jdbcTemplate进行数据库操作。 假设有一张表People.我们需要插入多条数据。处理的方法有两种: 第一种方法是对每一个数据,都执行一直insert命令:jdbcTemplate.update(INSERT_PEOPLE_QUERY, people.getFirstName(), people.getLastName()); 第二种方法是使用batchUpdate的方法:jdbcTemplate.batchUpdate(INSERT_PEOPLE_QUERY, transformToObjects(peoples));
private List<Object[]> transformToObjects(List<People> peoples) {
return from(peoples).transform(new Function<People, Object[]>() {
@Override
public Object[] apply(People people) {
return new Object[]{people.getFirstName(), people.getLastName()};
}
}).toList();
}
如果需要大量更新数据,并且使用的jdbc driver支持batchUpdate的情况下,使用batchUpdate会比直接执行逐行执行update效率快一个数量级。但 如果jdbc不支持batchUpdate,那么jdbcTemplate的batchUpdate在其内部仍然是逐行执行。 我使用postgreSQL进行试验: 当需要插入1000个People时,逐行插入需要4秒,使用batchUpdate需要时间不到1秒 当需要插入10000个People时,逐行插入需要17秒,使用batchUpdate仅仅需要1秒
private List<Object[]> transformToObjects(List<People> peoples) {
return from(peoples).transform(new Function<People, Object[]>() {
@Override
public Object[] apply(People people) {
return new Object[]{people.getFirstName(), people.getLastName()};
}
}).toList();
}
如果需要大量更新数据,并且使用的jdbc driver支持batchUpdate的情况下,使用batchUpdate会比直接执行逐行执行update效率快一个数量级。但 如果jdbc不支持batchUpdate,那么jdbcTemplate的batchUpdate在其内部仍然是逐行执行。 我使用postgreSQL进行试验: 当需要插入1000个People时,逐行插入需要4秒,使用batchUpdate需要时间不到1秒 当需要插入10000个People时,逐行插入需要17秒,使用batchUpdate仅仅需要1秒
相关文章推荐
- 使用spring jdbc的batchUpdate功能提高性能
- 使用spring jdbc遇到的一个性能问题
- SpringMVC(14):使用springmvc+spring+jdbc 优化订单管理系统的示例(多条件查询用户列表功能实现)
- 使用 WebSphere Application Server V8.5 的动态集群功能提高资源利用率并改善性能
- 关于使用Spring的缓存,将携带父id及所有子类全部数据获取,存入缓存,提高性能
- SpringMVC(21):使用springmvc+spring+jdbc 优化订单管理系统的示例(ID查看供应商信息明细-REST的功能实现)
- SpringMVC(24):使用springmvc+spring+jdbc 优化订单管理系统的示例(多文件上传功能的实现)
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- SpringMVC(18):使用springmvc+spring+jdbc 优化订单管理系统的示例(供应商新增的功能实现)
- SpringMVC(22):使用springmvc+spring+jdbc 优化订单管理系统的示例(ID修改供应商明细的功能实现)
- SpringMVC(16):使用springmvc+spring+jdbc 优化订单管理系统的示例(多条件查询供应商列表功能实现)
- SpringMVC(17):使用springmvc+spring+jdbc 优化订单管理系统的示例(新增用户的功能实现)
- 使用PreparedStatement 防止SQL攻击 实现预编译功能提高性能
- 使用Guava+Spring实现异步回调操作,提高程序性能
- 对于大批量赋值功能,使用if判断是否能提高性能
- 使用Spring的JdbcTemplate实现分页功能
- 使用Spring进行Web应用开发(二)使用jdbc的持久层
- 使用内存映射文件来提高你程序的性能
- 使用内存映射文件来提高你程序的性能
- 在视频格式转换中使用MMX和SSE指令集提高性能