SpringBatch数据库概论
SpringBatch提供了表初始化的语句,并支持了多种常见的数据库,我们可以在配置文件中设置spring.batch.initialize-schema的值来指定对数据库的操作。
embedded:如果不存在,创建一个空地库always:每次都重新创建新的库never:从不创建新的库默认的数据库文件地址在/spring-batch-core-4.1.2.RELEASE.jar!/org/springframework/batch/core/schema-*.sql,根据不同的数据库类型,执行相应的脚本。
我们还可以通过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数据库表概论
执行完上边的脚本我们在数据库可以看到下边一个数据库表列表:
这些表可以分为三类:
JobInstanceBATCH_JOB_SEQBATCH_JOB_INSTANCEJobExecutionBATCH_JOB_EXECUTIONBATCH_JOB_EXECUTION_CONTEXTBATCH_JOB_EXECUTION_PARAMSBATCH_JOB_EXECUTION_SEQStepExecutionBATCH_STEP_EXECUTIONBATCH_STEP_EXECUTION_CONTEXTBATCH_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/DOUBLEKey_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执行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
BATCH_JOB_EXECUTION_SEQ
写在后边的话
SpringBatch最为一个非常主流的批处理框架,大家关心的一般都是如何使用好他,所以平常了解的都是如何使用。但是使用中遇到的问题的时候,才会去看源码,或者去查数据库,也就是这个时候才能体现出一个牛逼的程序员和一个码农的区别。
鹏哥在平台的工作中跟别人吵架,好少能吵赢过,究其原因就是对一个技术一瓶子不满,半瓶子咣当。所以鹏哥死磕SpringBatch,在这里发表一个系列,虽然鹏哥内心也知道对于这种相对冷门的技术,只有真正用的人才会去看,去了解,但是我还是说服自己要写这个系列,就是为了一个在跟别人吵SpringBatch的时候,我说一,别人不会说二。