永发信息网

jobrepository 元数据在内存好吗

答案:1  悬赏:10  手机版
解决时间 2021-11-25 05:29
jobrepository 元数据在内存好吗
最佳答案
Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用HSQLDB,也就是说在Job的运行过程中,所有的元数据都被储存在内存中,在Job结束后会随着进程的结束自动消失;在这里我们推荐配置JobRepository去使用MySQL。
在这种情况下,Spring Batch在单次执行或者从一个执行到另外一个执行的时候会使用数据库去维护状态,Job执行的信息包括Job实例、传入的参数、执行的结果、每一个Step执行的结果都会被存储在数据库中;数据库使用了6个表来存储相关信息:
BATCH_JOB_INSTANCE
我们都知道,在Job运行时,一个Job实例被创建;Job实例包含了Job实例它本身和Job参数;所有Job实例本身的信息将会被保存在BATCH_JOB_INSTANCE表中:
字段 描述
JOB_INSTANCE_ID 表的主键
VERSION 记录的版本
JOB_NAME 被执行JOB名
JOB_KEY Job名和Job参数的Hash值,被使用来唯一标示一个Job实例
BATCH_JOB_PARAMS
这个表包含了所有被传递到Job的参数,正如上面提到的,参数被Spring Batch使用来作为Job标示的一部分。这个表包含的字段如下:
字段 描述
JOB_INSTANCE_ID 表示BATCH_JOB_INSTANCE的外键
TYPE_CD 表示被存储的值的类型(string, date, long, double)
KEY_NAME Job参数的键(Job参数作为键值对被传递)
STRING_VAL 当这个参数是string类型时的值
DATE_VAL 日期型参数值
LONG_VAL 长整型参数值
DOUBLE_VAL 双精度或者单精度型参数值
BATCH_JOB_EXECUTION和BATCH_STEP_EXECUTION
当一个Job被创建并执行时,这个Job的运行状态被保存在BATCH_JOB_EXECUTION表中,其中包括:开始时间、结束时间、最近一次执行的结果;
BATCH_STEP_EXECUTION表和BATCH_JOB_EXECUTION差不多,它包含了每一个Step在执行过程中的开始时间、结束时间、commit的次数、Step状态相关的参数;
BATCH_JOB_EXECUTION表的字段信息:
字段 描述
JOB_EXECUTION_ID 表的主键
VERSION 记录的版本
JOB_INSTANCE_ID 到BATCH_JOB_INSTANCE表的外键
CREATE_TIME Job实例被创建的时间
START_TIME Job开始执行的时间
END_TIME Job执行结束的时间,不管成功与否
STATUS Job被执行的状态
EXIT_CODE Job返回时的退出码
EXIT_MESSAGE Job返回时的推出消息
LAST_UPDATED 当前记录上一次被更新的时间
BATCH_STEP_EXECUTION表的字段信息:
STEP_EXECUTION_ID 表的主键
VERSION 记录的版本
STEP_NAME 被配置在Job xml中的Step的名字
JOB_EXECUTION_ID 连接到BATCH_JOB_EXECUTION表的外键
START_TIME Step开始的时间
END_TIME Step完成的时间,无论成功与否
STATUS Step当前的状态
COMMIT_COUNT 当前Step被Commit的次数
READ_COUNT 当前Step读取数据库的次数
FILTER_COUNT 当前Step读取到的item数量
WRITE_COUNT 当前Step写的Item数量
READ_SKIP_COUNT 读取Item时跳过的数量
WRITE_SKIP_COUNT 写Item时跳过的数量
PROCESS_SKIP_COUNT 在ItemReader读取后,没有经过ItemProcessor处理的item的数量
ROLLBACK_COUNT 在Step执行过程中,总的Rollback的数量
EXIT_CODE Step完成时返回的退出码
EXIT_MESSAGE Step完成时返回的退出消息
LAST_UPDATED 这条记录上次被更新的时间
BATCH_JOB_EXECUTION_CONTEXT和BATCH_STEP_EXECUTION_CONTEXT
这是两个Context相关的表,它们分别用于存储Job或者Step相关的ExecutionContext的持久化版本,Spring Batch中的ExecutionContext类似于WEB应用程序中的Servlet Context或Session,它们都提供了一个存储信息的全局空间,本质上是作用域在Job或者Step中的一个键值对;这个Job或者Step的ExecutionContext被用来在特定的作用域里面传递信息,如果是Job,它就用来在Step与Step之间传递信息,如果是Step,它用来在多个记录的处理过程中传递信息。
表BATCH_JOB_EXECUTION_CONTEXT和BATCH_STEP_EXECUTION_CONTEXT是这些键值对的序列化版本,它们除了一个外键不同之外,其它几乎都相同;
字段 描述
JOB_EXECUTION_ID/STEP_EXECUTION_ID 引用自表BATCH_JOB_EXECUTION或BATCH_STEP_EXECUTION的外键
SHORT_CONTEXT Context的字符串表示
SERIALIZED_CONTEXT 一个被序列化的ExecutionContext,以便在将来重试的时候使用
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎样能更快的提高控球能力?
负面舆情事件中有45.9%的事件根本没有
投资30万,开个砖厂如何?
面对一波未平一波又起的挫折怎么办
注册一家金属贸易公司,月销售额大约350万元
叫化子用粤语怎么说
成龙的两个哥哥在做什么 房仕德房仕胜现状
一辆汽车每千米耗油0.098升。照这样计算,行6
金融里厚尾现象是什么?
自康乐以来,未复有能与其奇者。表达了作者怎
扶阳壮骨贴贵不?我看他们都说效果挺好的
40x乘4等于300解方程
大多数四十岁以上的妇女都识字吗
如图,在Rt△ABC中,∠B=90°,AC=60cm,∠A=
对学生假期生活的评语
推荐资讯
大神们,请教一些SCA(苏科)涂胶定量机问题
唯宝马桶和TOTO马桶的区别
舒淇因为甄子丹退出微博到底是为什么如题 谢
请问VHDL中case a is when''000'
影楼或者舞台一般用什么粉底
惠普打印机不能连续打印,只能一张一张打,打
魔发师地址在什么地方,想过去办事,
2号线世纪大道几号口出来可以换987路公交车
巴西北部有亚马孙河,却选择在南部建伊泰普水
当代书法能达到最高境界的是谁啊?
乱叫乱嚷,形容吵吵嚷嚷是什么词语
while(x=1)x++ x初值为0 的循环执行次数
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?