我们都知道 Spring Batch 有 2 种任务方式。

主要是在 Step 阶段,在 Step 阶段,我们可以执行一个 Tasklet,我们也可以按照 Chunk 来执行。

主要区别

如果使用 Tasklet 的话,我们可以一个 Step 对应一个 Tasklet,Spring Batch 不允许一个 Step 对应多个 Tasklet。

考虑有一个场景,我们需要使用 Spring Batch 对数据库中的表进行更新,这个表可能每次 Batch 要更新 几千条数据,需要满足每 5 分钟更新一次。

如果我们采取 Tasklet 的方式的话,正常的思维都是读取需要更新的数据,然后逐条进行更新。

这个没有问题吧,但是恰恰问题就在这里。

问题就是在 Spring Batch 使用的事务,Tasklet 在启动的时候会创建一个事务,那么读取 1000 条数据,处理 1000 条数据,写入 1000 条数据都在一个事务里面。

假设这个处理时间超过 5 分钟,下一次的任务又开始启动了,这个时候 Spring Batch 还会启动一个事务。

假设 10 分钟了,我们还是没有完成,Spring Batch 会继续启动任务和创建事务。

结果是什么,这个显而易见了,就是出现事务堆积,导致锁表,然后所有的任务都失败,无法完成。

针对这种场景,我们就需要 chunk 了。

chunk

Chunk 的主要目的就是为了告诉 Spring 一次执行几条记录。

我们如果设置 Chunk 为 1 的话,那么 Spring Batch 每次读取一条记录,处理一条记录,写入一条记录,然后将这个事务进行提交。

这样的话,可以有效的避免事务堆积导致的锁表。

Chunk 的大小,通常比较小,如果一次性设太大了,也会锁表。

Spring Batch 中的 chunk - Spring - OSSEZ我们都知道 Spring Batch 有 2 种任务方式。 主要是在 Step 阶段,在 Step 阶段,我们可以执行一个 Tasklet,我们也可以按照 Chunk 来执行。 主要区别如果使用 Tasklet 的话,我们可以一个 Step 对应一个 Tasklet,Spring Batch 不允许一个 Step 对应多个 Tasklet。 考虑有一个场景,我们需要使用 Spring Batch 对数据库中的表进行更新,这个表…https://www.ossez.com/t/spring-batch-chunk/14151

Spring Batch 中的 chunk相关推荐

  1. Spring Batch中的块处理

    大数据集的处理是软件世界中最重要的问题之一. Spring Batch是一个轻量级且强大的批处理框架,用于处理数据集. Spring Batch Framework提供了"面向Tasklet ...

  2. 介绍Spring Batch 中Tasklet 和 Chunks

    介绍Spring Batch 中Tasklet 和 Chunks Spring Batch 提供了两种不同方式实现job: tasklet 和 chunk.本文通过实例实践两种方法. 示例需求说明 给 ...

  3. Spring Batch中面向TaskletStep的处理

    许多企业应用程序需要批处理才能每天处理数十亿笔交易. 必须处理这些大事务集,而不会出现性能问题. Spring Batch是一个轻量级且强大的批处理框架,用于处理这些大数据集. Spring Batc ...

  4. 在spring batch中如何使用rowmapper

    概述 在spring batch框架中提供了三个核心的概念,分别是reader和processor和writer,分别用于读取,处理和写数据.关于这部分更详细的内容可以参考博客:批处理框架spring ...

  5. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  6. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  7. 首次使用批处理框架 Spring Batch ,被震撼到了,太强大...

    以下文章来源方志朋的博客,回复"666"获面试宝典 spring batch简介 spring batch是spring提供的一个数据处理框架.企业域中的许多应用程序需要批量处理才 ...

  8. spring batch (四) Job的配置及配置文件说明介绍

    内容来自<Spring Batch 批处理框架>,作者:刘相. 我只是个搬运工. 一.Spring Batch提供了独立的标签用来顶一个Job配置,分别是job.step.tasklet. ...

  9. 使用 Spring Batch 构建企业级批处理应用

    https://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/index.html https://www.ibm.com/develope ...

  10. Spring Batch 专题

    如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...

最新文章

  1. 打补丁要按顺序吗_通辽正地饲料丨喂猪吃料也要讲究先后顺序! 看看你做对了吗?...
  2. 成为阿里 P7 真的难么?
  3. 【转】创建数据库和表的SQL语句
  4. NodeJS学习笔记: RESTful —— 为本系列做个小结
  5. [译]Go如何优雅的处理异常
  6. OpenCV学习——矩阵操作总结(转)
  7. vue 方法获取返回值_vue中子组件怎么获取父组件中的方法的返回值
  8. 董事长亲自“翻墙偷拍”后,身价暴涨3000万
  9. 使用Postman测试https接口时的小问题记录
  10. 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
  11. 自定义iWatch App点击Glance后的跳转页
  12. python获取视频缩略图_Python代码生成视频的缩略图的实例讲解
  13. 技术开发人员需要改变性格吗?
  14. 运动控制器RTEX总线使用入门
  15. 用HTML来做导航栏
  16. vscode如何配置java环境_VSCode 配置Java环境
  17. OneDrive文件数限制:150000
  18. perl novel可变剪接识别(2)
  19. qt5把qt_zh_CN.qm加载了,但QTextEdit的右键菜单仍然是英文,而QLineEdit的倒是中文。怎样设置使得QTextEdit的右键菜单是中文
  20. 毕设-SpringBoot学生请假系统

热门文章

  1. RabbitMQ的学习笔记
  2. [经典之作]vml经典之作
  3. @kubernetes(k8s)使用adm安装实现keepalived高可用
  4. zz]Prisoners’ Dilemma Tit For Tat
  5. 我的RUST学习 ——【第九章 9-2】Result 与 可恢复的错误
  6. 南非认证_南非2008-避免或尽量减少时差
  7. iPhone 行/水货、黑机、妖机、卡贴机科普。
  8. summernote 添加emoji表情包
  9. virtualhost配置
  10. 使用nltk库查找英文同义词和反义词