Spring batch Spring批处理过程花费的时间太长,无法完成任务

Spring batch Spring批处理过程花费的时间太长,无法完成任务,spring-batch,spring-batch-admin,Spring Batch,Spring Batch Admin,有一个java进程,它触发一个长时间运行的数据库查询,从数据库中获取大量行。然后将这些行写入文件。由于各种原因,无法在块的基础上处理查询 我只是将这个过程包装在一个Spring批处理tasklet中,然后开始工作 观察到,普通java进程比Spring批处理作业快4倍。我知道上面的场景不适合Spring批处理配置,但我只是想知道,当它作为一个Tasklet进行配置时,为什么这个过程会很慢 [编辑]最近,我创建了另一个批处理过程,其中包含一个ItemProcessor,用于根据一组数据验证每个项目

有一个java进程,它触发一个长时间运行的数据库查询,从数据库中获取大量行。然后将这些行写入文件。由于各种原因,无法在块的基础上处理查询

我只是将这个过程包装在一个Spring批处理tasklet中,然后开始工作

观察到,普通java进程比Spring批处理作业快4倍。我知道上面的场景不适合Spring批处理配置,但我只是想知道,当它作为一个Tasklet进行配置时,为什么这个过程会很慢


[编辑]最近,我创建了另一个批处理过程,其中包含一个ItemProcessor,用于根据一组数据验证每个项目,这些数据应在作业开始之前加载。我创建了一个作业侦听器来初始化Oracle DB中的数据集。该数据集包含近20万条记录,读取这些数据几乎需要1.5小时。因此,我们严重怀疑spring batch在从DB一次读取大量数据方面有一定的限制。

您使用的是哪种jobRepository?如果它是另一台机器中的DB,它将创建大量最新的数据。您做过分析吗?如果代码在一个Tasklet中,开销应该几乎为零,因为实际上没有存储任何状态。我还想知道为什么基于块的处理在这里不是一个选项。@dimzak:我正在另一台机器上使用带有DB的JobRepositoryFactoryBean。迈克尔·米内拉:到目前为止,我还没有做过任何剖析。不使用基于块的处理,因为文件是使用BIRT API生成的excel或pdf文件。正如Michael提到的,tasklet方法不应该有任何开销。Spring Batch应用程序和普通旧应用程序是否使用相同的数据源和驱动程序?两者都使用相同的驱动程序。但是旧的查询是用JDBCTemplate执行的。不是JPA。