Spring Batch 4.2.0.RC1 发布,改进性能
Spring Batch 4.2.0.RC1 已发布,这是一个使用 Spring 和 Java 编写离线和批处理应用程序的框架。本次更新主要针对核心框架的性能方面进行了改进。
接下来了解一下具体的改进内容,总共包括四个方面:
- 增强 Step Partitioning 功能
- 改进 Job Stop
- Faster Writes with the
JpaItemWriter
- Optimized Bean Mapping with the
BeanWrapperFieldSetMapper
增强 Step Partitioning 功能
一直以来,Spring Batch 框架都没有对启动 partitioned step 进行过良好的优化。在该版本中,团队深入研究了分区过程,以找出导致此性能问题的根本原因。分区过程的主要步骤之一是找到最后执行的 step(以查看当前执行是否为重新启动的 partitioned step)。团队由此发现了最后执行的 step 在给定的内存实例中会从所有任务执行中加载所有的 step 执行,这明显会降低效率。
为此,团队使用一个 SQL 查询(数据库级别的查询)替换了这些代码,仅返回最后执行的 step。最后的结果也非常不错,根据 partitioned-step-benchmark 基准测试的结果,使用此方法将 step 执行划分为 5000 个分区最终将速度提升了将近 10 倍:
改进 Job Stop 功能
这个功能的改进思路和上面的类似,也是通过改用 SQL 查询来提升执行效率,最终结果如下
使用 JpaItemWritershi
实现更快的写入
JpaItemWritershi
使用 javax.persistence.EntityManager#merge
函数在 JPA 持久化的上下文中写入条目。当条目的状态未知或已知为更新状态时,这是有意义的。但在许多已知数据是新数据并应视为插入数据的文件提取任务中,使用 javax.persistence.EntityManager#merge
的效率并不高。
在此版本中,团队在 JpaItemWriter
中引入了一个新的可选项,以在上述的场景中使用 persist
而非 merge
。通过这个可选项,根据 jpa-writer-benchmark 基准测试,文件提取任务使用 JpaItemWriter
在数据库插入 100 万个条目的速度比之前快了 2 倍。
使用 BeanWrapperFieldSetMapper
对 Bean Mapping 进行优化
BeanWrapperFieldSetMapper
提供了一个十分实用的特性,它可以让我们用一个给定的 JavaBean (驼峰命名、嵌套属性等)的字段名进行模糊匹配。当字段名与列的名称匹配时,可通过将 distanceLimit
的参数设置为 0 来启用完全匹配。
此版本修复了 BeanWrapperFieldSetMapper
的性能问题,根据 bean-mapping-benchmark 基准测试的结果,条目的映射速度比之前快了 1.5 倍。
最后,所有基准测试均在 Macbook Pro(16GB RAM, 2.9 GHz Intel Core i7 CPU, MacOS Mojave 10.14.5, Oracle JDK 1.8.0_201)设备中进行。相关的测试基准源码如下:
- partitioned-step-benchmark: https://github.com/benas/spring-batch-sandbox/tree/master/batch2716
- stop-benchmark: https://github.com/benas/spring-batch-sandbox/tree/master/batch2422
- jpa-writer-benchmark: https://github.com/benas/spring-batch-sandbox/tree/master/batch2462
- bean-mapping-benchmark: https://github.com/benas/spring-batch-sandbox/tree/master/batch1801
下一个版本是 Spring Batch 4.2.0 的候选版,将于 9 月 30 日发布。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
DBeaver 社区版 6.2.1 发布,可视化数据库管理工具
DBeaver 社区版 6.2.1 已发布。 值得关注的更新 Data viewer: 改进了空间(GIS)的表示方式(工具提示、不同列的不同形状颜色) 改善 JSON 渲染性能 修复XML 值查看器 修复XML 自动格式化(多余的空格) 添加了上下文菜单“导航”(返回) 修复浮点数的表示(指数视图) 修复列转换设置对话框 SQL 编辑器:更新行计数计算已修复 MySQL:日期/时间格式已修复 PostgreSQL:3D 几何列渲染已修复 SQL Server:带有“ go”的标识符的问题已修复 Oracle:SQL 解析器已修复 连接设置: 加载多个 data-sources*.json 文件 在“测试连接”对话框中尊重首选项更改(超时和其他) 项目导出/导入向导已修复 数据库元数据搜索向导已修复 新的数据库驱动程序: H2GIS Kognitio Opendistro (Elasticsearch) 修复了许多其他较小的 UI 错误 发布公告:https://dbeaver.io/2019/09/22/dbeaver-6-2-1/
- 下一篇
ReactOS 0.4.12 发布,Windows 系统的开源替代方案
ReactOS 团队发布了ReactOS 0.4.12,先来看看值得关注的更新亮点: 内核改进 文件系统驱动程序需要大量支持才能正确运行,并且可以说,没有比运行 Microsoft 自己的 FS 驱动更好的测试 ReactOS FS 基础结构的方法了。尽管该项目尚未完成,但新版本朝着这个目标迈进了一大步。 ReactOS 开发者 Pierre Schweitzer 和 Thomas Faber 特别关注公用缓存,它是与内存管理器有着深厚联系的模块,并且从传统上来讲是一个非常麻烦的组件。归功于他们的贡献,以及 HermèsBélusca-Maïto 在修复 ReactOS 的 CDFS 驱动方面的贡献,内核的总体稳定性得到了显著改善。 此外,设备电源管理在新版本中得到了改进。ReactOS 对 PXE 引导的支持也已修复,在必须对系统进行集中管理的企业或工业环境中,ReactOS 提供的网络功能越多,它就可以找到更多的用途。 已修复内核图像保护 安全性是现代操作系统的基本要求,而操作系统保护其自身文件的能力是其安全性的基础。为此,大多数操作系统将具有锁定功能,以防止任何随机应用程序运行并...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果