使用spring jdbc的batchUpdate功能提高性能

在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秒


没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭