Spring批处理分区几步运行很长时间

时间:2014-09-15 15:00:49

标签: spring-batch spring-batch-admin

我正在使用Spring批处理读取Oracle DB(约2百万条记录)并写入文件。

以下代码使用grid-size = 8的分区概念。两个作业(Job1,Job2)使用相同的代码来执行。每个工作过程〜100万个数据。

每个作业都有grid-size = 8 * 2个作业= 16个并行运行的线程。 1或2个线程需要很长时间才能完成。 Borz的1或2个线程的总执行时间非常长。

以下是代码段。感谢您的建议。

<bean id="dataSource" class="com.aap.batch.common.DataSourceJdbc"><!--Connection details -->
<bean id="jDBCTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor" />

<step id="masterStep" >
        <partition step="slave" partitioner="rangePartitioner" >
            <handler grid-size="8" task-executor="taskExecutor" />
        </partition>            
</step>

<step id="slave" xmlns="http://www.springframework.org/schema/batch">
    <tasklet>
        <chunk reader="fetchReader" writer="flatFileWriter" processor="dataProcessor" commit-interval="100" />
    </tasklet>
</step>

<bean name="rangePartitioner" id="rangePartitioner" class="com.aap.batch.RangePartitioner" scope="step" >
    <property name="jDBCTemplate" ref="jDBCTemplate" />
</bean>

<bean name="fetchReader" id="fetchReader" class="com.aap.batch.FetchReader" scope="step" >
    <property name="jDBCTemplate" ref="jDBCTemplate" />
</bean>

0 个答案:

没有答案
相关问题