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

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,根据不同的数据库类型,执行相应的脚本。

cb23027b51b91725fb2258b7fe2f21ea.png

我们还可以通过 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数据库表概论

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

3cb419a7283d723062619b1fc5a353ae.png

这些表可以分为三类:

JobInstanceBATCH_JOB_SEQBATCH_JOB_INSTANCEJobExecutionBATCH_JOB_EXECUTIONBATCH_JOB_EXECUTION_CONTEXTBATCH_JOB_EXECUTION_PARAMSBATCH_JOB_EXECUTION_SEQStepExecutionBATCH_STEP_EXECUTIONBATCH_STEP_EXECUTION_CONTEXTBATCH_JOB_EXECUTION_SEQ

18b722af6e0c6f41c63e54550e4a5c02.png

数据库表详细介绍

BATCH_JOB_EXECUTION

17b5dad71d4f5536d9b8187a2dca0cc2.png

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执行中放入的一些参数数据

92bf7b8be165daf65f8a9b4cbc414606.png

BATCH_JOB_EXECUTION_PARAMS

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

1a495f5cc28fb5f5aa4d98331f6c7b57.png

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

Job执行表的Sequence表

c74b4846f3f7aaf3d440cb103062555f.png

BATCH_JOB_INSTANCE

Job实例表

3b245a26924cc1847337cfdc027b0b6d.png

BATCH_JOB_SEQ

20de55e5bd4efcbba68d91fcd33580e0.png

BATCH_STEP_EXECUTION

bf20be79bbce705204306ff348ccf252.png

Step_Execution_Id: Step 执行主键Version:本条记录被更新次数,主要是用于并发Step_Name: Step 名称Job_Execution_id: Step 对应的Job执行IdStart_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: 推出CodeExit_Message: 推出信息Last_UpdateD: 最后更新时间BATCH_STEP_EXECUTION_CONTEXT

8bbc92e3579693e0432f9aff3975e8c8.png

BATCH_JOB_EXECUTION_SEQ

53fe2d1fabf2191e44f894d23bf77b44.png

写在后边的话

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值