Spring Batch 中的 chunk
我们都知道 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相关推荐
- Spring Batch中的块处理
大数据集的处理是软件世界中最重要的问题之一. Spring Batch是一个轻量级且强大的批处理框架,用于处理数据集. Spring Batch Framework提供了"面向Tasklet ...
- 介绍Spring Batch 中Tasklet 和 Chunks
介绍Spring Batch 中Tasklet 和 Chunks Spring Batch 提供了两种不同方式实现job: tasklet 和 chunk.本文通过实例实践两种方法. 示例需求说明 给 ...
- Spring Batch中面向TaskletStep的处理
许多企业应用程序需要批处理才能每天处理数十亿笔交易. 必须处理这些大事务集,而不会出现性能问题. Spring Batch是一个轻量级且强大的批处理框架,用于处理这些大数据集. Spring Batc ...
- 在spring batch中如何使用rowmapper
概述 在spring batch框架中提供了三个核心的概念,分别是reader和processor和writer,分别用于读取,处理和写数据.关于这部分更详细的内容可以参考博客:批处理框架spring ...
- Spring Batch在大型企业中的最佳实践
在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...
- java中batch基础_详解Spring batch 入门学习教程(附源码)
详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...
- 首次使用批处理框架 Spring Batch ,被震撼到了,太强大...
以下文章来源方志朋的博客,回复"666"获面试宝典 spring batch简介 spring batch是spring提供的一个数据处理框架.企业域中的许多应用程序需要批量处理才 ...
- spring batch (四) Job的配置及配置文件说明介绍
内容来自<Spring Batch 批处理框架>,作者:刘相. 我只是个搬运工. 一.Spring Batch提供了独立的标签用来顶一个Job配置,分别是job.step.tasklet. ...
- 使用 Spring Batch 构建企业级批处理应用
https://www.ibm.com/developerworks/cn/java/j-lo-springbatch1/index.html https://www.ibm.com/develope ...
- Spring Batch 专题
如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...
最新文章
- 打补丁要按顺序吗_通辽正地饲料丨喂猪吃料也要讲究先后顺序! 看看你做对了吗?...
- 成为阿里 P7 真的难么?
- 【转】创建数据库和表的SQL语句
- NodeJS学习笔记: RESTful —— 为本系列做个小结
- [译]Go如何优雅的处理异常
- OpenCV学习——矩阵操作总结(转)
- vue 方法获取返回值_vue中子组件怎么获取父组件中的方法的返回值
- 董事长亲自“翻墙偷拍”后,身价暴涨3000万
- 使用Postman测试https接口时的小问题记录
- 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
- 自定义iWatch App点击Glance后的跳转页
- python获取视频缩略图_Python代码生成视频的缩略图的实例讲解
- 技术开发人员需要改变性格吗?
- 运动控制器RTEX总线使用入门
- 用HTML来做导航栏
- vscode如何配置java环境_VSCode 配置Java环境
- OneDrive文件数限制:150000
- perl novel可变剪接识别(2)
- qt5把qt_zh_CN.qm加载了,但QTextEdit的右键菜单仍然是英文,而QLineEdit的倒是中文。怎样设置使得QTextEdit的右键菜单是中文
- 毕设-SpringBoot学生请假系统