有哪位高手在实际的项目中使用过Spring Batch,我现在有两个问题:
1.经测试,每一个Job的启动和Step的切换都要花费25~30秒的时间,不知道这个开销是否有办法减少
2.我现在用Spring Batch实现从数据表读出数据,经过一定的处理或删选,写入另一张数据表。
采用Spring Batch的ItemReader和ItemWriter模型,reader用的是JdbcCursorItemReader,Writer用的是自定义ItemWriter,主要逻辑是基于Jdbctemplate的batch update,每次更新commit-interval数量的记录。目前最大的问题,每次 commit-interval的数量不能超过10000,否则outofmemory,有没有办法减少内存使用,二,这个模型花费的时间很长,远远超过使用sql语句实现。是否是实现方法有问题。

解决方案 »

  1.   

    我没有用过spring 的batch,但是,对于jdbc的批处理,原理应该都差不多,就是,你进行批处理的sql,必须是一样的,也就是说,一次进行1万条记录的update,那么你是用的sel语句需要一样,只是参数不一样。因为jdbc使用批处理是使用prepared statement,sql一样的情况下,一次批处理1万个请求,prepared statement也只有1个,系统会把所有的参数一次发送,一次执行。如果你的sql语句不一样,哪怕只是有几个不一样,这时系统其实会准备1万个prepared statement。
      

  2.   

     我现在实际的情况是insert into B select (...........) from A
    只不过A的数据量接近百万。