百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术流 > 正文

鹏哥欠你们的SpringBatch数据库分析,终于有时间整理了

citgpt 2024-06-27 19:58 8 浏览 0 评论

Spring Batch 数据库概论

Spring Batch提供了表初始化的语句,并支持了多种常见的数据库,我们可以在配置文件中设置 spring.batch.initialize-schema 的值来指定对数据库的操作。

  • embedded:如果不存在,创建一个空的库
  • always:每次都重新创建新的库
  • never:从不创建新的库

默认的数据库文件地址在 /spring-batch-core-4.1.2.RELEASE.jar!/org/springframework/batch/core/schema-*.sql,根据不同的数据库类型,执行相应的脚本。

鹏哥欠你们的SpringBatch数据库分析,终于有时间整理了

?

我们还可以通过 spring.batch.schema 指定SQL脚本的路径,通过 spring.batch.table-prefix 设置数据库表的前缀,默认是BATCH_ 开头。

#设置schema脚本的路径
spring.batch.schema=org/springframework/batch/core/schema-mysql.sql
#设置表前缀
spring.batch.table-prefix=BATCH

数据库表概论

执行完上边的脚本我们在数据库可以看到下边一个数据库表列表:

?

这些表可以分为三类:

  1. JobInstance
  • BATCH_JOB_SEQ
  • BATCH_JOB_INSTANCE
  1. JobExecution
  • BATCH_JOB_EXECUTION
  • BATCH_JOB_EXECUTION_CONTEXT
  • BATCH_JOB_EXECUTION_PARAMS
  • BATCH_JOB_EXECUTION_SEQ
  1. StepExecution
  • BATCH_STEP_EXECUTION
  • BATCH_STEP_EXECUTION_CONTEXT
  • BATCH_JOB_EXECUTION_SEQ

?

数据库表详细介绍

BATCH_JOB_EXECUTION

?

  • job_execution_id: Job的执行ID,表主键
  • version:当前记录被修改的次数,控制并发
  • job_instance_id:Job 实例ID,同一个实例可能对应多条执行记录,但是一般只会对应一条执行成功记录,默认情况下JobName+参数 确定唯一的Job实例。
  • create_time:记录创建时间
  • start_time:Job开始执行时间
  • end_time:Job结束执行时间
  • status:执行状态
  • exit_code:退出码
  • exit_message:退出信息
  • last_update:最后更新日期
  • job_configuration_location:

BATCH_JOB_EXECUTION_CONTEXT

Batch执行上下文,记录batch执行中放入的一些参数数据

?

BATCH_JOB_EXECUTION_PARAMS

Job执行参数表,在Launch 一个Job的时候同时会传入一个Job参数的实例。

?

  • Job_Execution_id: Job执行记录主键
  • Type_Cd: 参数类型,LONG/STRING/DATE/DOUBLE
  • Key_Name: 参数名
  • String_Val: 字符串参数值
  • Date_Val: 时间参数值
  • Long_Val: 整数参数值
  • Double_Val: 浮点数参数值
  • Identifying: 是否用于标识Job实例

BATCH_JOB_EXECUTION_SEQ

Job执行表的Sequence表

?

BATCH_JOB_INSTANCE

Job实例表

?

BATCH_JOB_SEQ

?

BATCH_STEP_EXECUTION

?

  • Step_Execution_Id: Step 执行主键
  • Version:本条记录被更新次数,主要是用于并发
  • Step_Name: Step 名称
  • Job_Execution_id: Step 对应的Job执行Id
  • Start_time: Step 开始时间
  • End_time: Step结束时间
  • Status: Step 状态
  • Commit_Count: Step 已经提交的次数
  • Read_Count: Step 已经执行的Reader次数
  • Filter_Count:
  • Writer_Count: 已经执行的Writer 次数
  • Read_Ship_Count: Reader 跳过次数
  • Writer_Skip_Count: Writer 跳过次数
  • Process_Skip_Count: Processor跳过次数
  • Rollback_Count: 回滚次数
  • Exit_Code: 推出Code
  • Exit_Message: 推出信息
  • Last_UpdateD: 最后更新时间

BATCH_STEP_EXECUTION_CONTEXT

?

BATCH_JOB_EXECUTION_SEQ

?

写在后边的话

Spring Batch 最为一个非常主流的批处理框架,大家关心的一般都是如何使用好他,所以平常了解的都是如何使用。但是使用中遇到的问题的时候,才会去看源码,或者去查数据库,也就是这个时候才能体现出一个牛逼的程序员和一个码农的区别。

鹏哥在平台的工作中跟别人吵架,好少能吵赢过,究其原因就是对一个技术一瓶子不满,半瓶子咣当。所以鹏哥死磕Spring Batch,在这里发表一个系列,虽然鹏哥内心也知道对于这种相对冷门的技术,只有真正用的人才会去看,去了解,但是我还是说服自己要写这个系列,就是为了一个在跟别人吵Spring Batch的时候,我说一,别人不会说二。

相关推荐

js中arguments详解

一、简介了解arguments这个对象之前先来认识一下javascript的一些功能:其实Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中每个函数...

firewall-cmd 常用命令

目录firewalldzone说明firewallzone内容说明firewall-cmd常用参数firewall-cmd常用命令常用命令 回到顶部firewalldzone...

epel-release 是什么

EPEL-release(ExtraPackagesforEnterpriseLinux)是一个软件仓库,它为企业级Linux发行版(如CentOS、RHEL等)提供额外的软件包。以下是关于E...

FullGC详解  什么是 JVM 的 GC
FullGC详解 什么是 JVM 的 GC

前言:背景:一、什么是JVM的GC?JVM(JavaVirtualMachine)。JVM是Java程序的虚拟机,是一种实现Java语言的解...

2024-10-26 08:50 citgpt

使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
  • 使用Spire.Doc组件利用模板导出Word文档
跨域(CrossOrigin)

1.介绍  1)跨域问题:跨域问题是在网络中,当一个网络的运行脚本(通常时JavaScript)试图访问另一个网络的资源时,如果这两个网络的端口、协议和域名不一致时就会出现跨域问题。    通俗讲...

微服务架构和分布式架构的区别

1、含义不同微服务架构:微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并...

深入理解与应用CSS clip-path 属性
深入理解与应用CSS clip-path 属性

clip-pathclip-path是什么clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐...

2024-10-25 11:51 citgpt

HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
  • HCNP Routing&Switching之OSPF LSA类型(二)
Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
  • Redis和Memcached的区别详解
Request.ServerVariables 大全

Request.ServerVariables("Url")返回服务器地址Request.ServerVariables("Path_Info")客户端提供的路...

python操作Kafka

目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细...

Runtime.getRuntime().exec详解

Runtime.getRuntime().exec详解概述Runtime.getRuntime().exec用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。...

promise.all详解 promise.all是干什么的
promise.all详解 promise.all是干什么的

promise.all详解promise.all中所有的请求成功了,走.then(),在.then()中能得到一个数组,数组中是每个请求resolve抛出的结果...

2024-10-24 16:21 citgpt

Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解
  • Content-Length和Transfer-Encoding详解

取消回复欢迎 发表评论: