首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Batch JdbcBatchItemWriter

Spring Batch JdbcBatchItemWriter
EN

Stack Overflow用户
提问于 2013-04-04 01:55:06
回答 2查看 7.6K关注 0票数 2

我正在对一个阅读器和一个写入器使用分块步骤。阅读器正在使用页面大小为5000的JdbcPagingItemReader。编写器在分块步骤中使用JdbcBatchItemWriter,提交间隔为5000。

代码语言:javascript
复制
    <batch:step id="createRecords">
                    <tasklet  allow-start-if-complete="true" >
                        <chunk reader="readTable"  writer="createNewRecords" 
                               commit-interval="5000" skip-limit="100" >
                       <skippable-exception-classes>
                       <batch:include class="java.lang.Exception"/>
                       </skippable-exception-classes>
                        </chunk>
                    </tasklet>
</batch:step>

当我使用这个分块步骤加载记录时,一切都像我所期望的那样工作。它一次插入5000条记录(当没有错误时),性能与预期一致。在一分钟内处理10000条记录等等。

但是,当我使用相同的分块步骤(完全相同的阅读器)并更改写入器使用的SQL来执行UPDATE语句时(就像在基本的SQL update而不是INSERT中一样),应用程序最多需要30+分钟来对50K的记录进行更新,这是很糟糕的。在SQL中,整个表的一条update语句(几乎完全相同)的运行时间不到几秒钟。如果可能的话,我想利用批处理的优势。

代码语言:javascript
复制
     <bean id="createNewRecords" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
    <property name="dataSource" ref="dataSource" />   
    <property name="sql">
        <value>
            <![CDATA[        
            UPDATE  TABLE SET TABLE_COLUM = :test
            ]]>
        </value>
    </property>
    <property name="itemSqlParameterSourceProvider">
        <bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
    </property>        
</bean>

想知道这听起来像是配置问题,还是spring batchs JdbcBatchItemWriter对update语句的处理方式不同?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-26 21:10:38

update查询会在每次调用时更新表中的每一行。它需要一个"where“子句,理想情况下基于唯一键索引或主键索引。

票数 0
EN

Stack Overflow用户

发布于 2013-06-08 04:04:42

您的模式中是否有触发器?如果是,那么这可能是问题所在。

无论如何,我也会尝试减少提交间隔。5000对我来说似乎相当大,既然你说单个更新执行得很快,这可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15794532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档