스프링배치가 제공하는 배치 메타데이터 저장 테이블 (BATCH_JOB_INSTANCE, BATCH_JOB_EXECUTION, BATCH_JOB_EXECUTION_CONTEXT, BATCH_JOB_EXECUTION_PARAMS, BATCH_STEP_EXECUTION, BATCH_STEP_EXECUTION_CONTEXT)

반응형
728x90
반응형

JobRepository

스프링 배치가 제공하는 여러 데이터베이스 테이블을 사용하여 배치 메타데이터를 저장한다. 총 6개의 테이블이 존재하는데, 각 테이블 정보에 대해 알아보자.

 

 

BATCH_JOB_INSTANCE 테이블

잡을 식별하는 고유 정보가 포함된 잡 파라미터로 잡을 처음 실행하면 단일 JobInstance 레코드가 테이블에 등록된다.

 

필드 설명
JOB_EXECUTION_ID 테이블의 기본 키
VERSION oplimistic locking 에 사용되는 레코드 버전
JOB_NAME 실행된 잡의 이름
JOB_KEY 잡 이름과 잡 파라미터의 해시 값으로, JobInstance 를 고유하게 식별하는 데 사용되는 값

 

 

BATCH_JOB_EXECUTION 테이블 

배치 잡의 실제 실행 기록을 나타낸다. 잡이 실행될 때마다 새 레코드가 해당 테이블에 생성되고, 잡이 진행되는 동안 주기적으로 업데이트된다.

 

필드 설명
JOB_EXECUTION_ID 테이블의 기본 키
VERSION 낙관적인 락에 사용되는 레코드 버전
JOB_INSTANCE_ID BATCH_JOB_INSTANCE 테이블을 참조하는 외래 키
CREATE_TIME 레코드가 생성된 시간
START_TIME 잡 실행이 시작된 시간
END_TIME 잡 실행이 완료된 시간
STATUS 잡 실행의 배치 상태
EXIT_CODE 잡 실행의 종료 코드
EXIT_MESSAGE EXIT_CODE 와 관련된 메시지나 스택 트레이스
LAST_UPDATED 레코드가 마지막으로 갱신된 시간

 

 

BATCH_JOB_EXECUTION_CONTEXT 테이블

스프링 배치는 ExecutionContext를 사용해 잡의 상태를 저장하는데, 재시작과 같이 스프링 배치가 여러번 실행되는 상황에서 실행 시점의 관련 정보를 저장하는 테이블이다.

 

필드 설명
JOB_EXECUTION_ID 테이블의 기본 키
SHORT_CONTEXT 트림 처림된 SERIALIZED_CONTEXT
SERIALZED_CONTEXT 직렬화된 ExecutionContext

 

 

BATCH_JOB_EXECUTION_PARAMS 테이블

잡이 매번 실행될 때마다 사용된 잡 파라미터를 저장한다. 잡에 전달된 모든 파라미터가 테이블에 저장된다. 재시작 시에는 잡의 식별 정보 파라미터만 자동으로 전달된다.

 

필드 설명
JOB_EXECUTION_ID 테이블의 기본 키
TYPE_CODE 파라미터 값의 타입을 나타내는 문자열
KEY_NAME 파라미터의 이름
STRING_VAL 타입이 String 인 경우 파라미터의 값
DATE_VAL 타입이 Date 인 경우 파라미터의 값
LONG_VAL 타입이 Long 인 경우 파라미터의 값
DOUBLE_VAL 타입이 Double 인 경우 파라미터의 값
IDENTIFING 파라미터가 식별되는지 여부를 나타내는 플래그

 

 

BATCH_STEP_EXECUTION 테이블

스텝의 시작, 완료, 상태에 대한 메타데이터를 저장한다. 스텝 분석이 가능하도록 다양한 횟수 값을 추가로 저장한다. 읽기 횟수, 처리 횟수, 쓰기 횟수, 건너뛰기 횟수 등과 같은 모든 데이터가 저장된다.

필드 설명
STEP_EXECUTION_ID 테이블의 기본 키
VERSION 낙관적인 락에 사용되는 레코드의 버전
STEP_NAME 스텝의 이름
JOB_EXECUTION_ID BATCH_JOB_EXECUTION 테이블을 참조하는 외래 키
START_TIME 스텝 실행이 시작된 시간
END_TIME 스텝 실행이 완료된 시간
STATUS 스텝의 배치 상태
COMMIT_COUNT 스텝 실행 중에 커밋된 트랜잭션 수 
READ_COUNT 읽은 아이템 수
FILTER_COUNT 아이템 프로세서가 null 을 반환해 필터링된 아이템 수
WRITE_COUNT 기록된 아이템 수
READ_SKIP_COUNT ItemReader 내에서 예외가 던져졌을때 건너뛴 아이템 수
PROCESS_SKIP_COUNT ItemProcessor 내에서 예외가 던져졌을때 건너뛴 아이템 수
WRITE_SKIP_COUNT ItemWriter 내에서 예외가 던져졌을때 건너뛴 아이템 수
ROLLBACK_COUNT 스텝 실행에서 롤백된 트랜잭션 수
EXIT_CODE 스텝의 종료 코드
EXIT_MESSAGE 스텝 실행에서 반호나된 메시지나 스택 트레이스
LAST_UPDATED 레코드가 마지막으로 업데이트된 시간

 

 

BATCH_STEP_EXECUTION_CONTEXT 테이블

StepExecution 내에 존재하는 ExecutionContext 의 정보를 저장한다. StepExecution 의 ExecutionContext는 스텝 수준에서 컴포넌트의 상태를 저장하는데 사용된다. 

필드 설명
STEP_EXECUTION_ID 테이블의 기본 키
SHORT_CONTEXT 트림 처리된 SERIALIZED_CONTEXT
SERIALIZED_CONTEXT 직렬화된 ExecutionContext

 

 

 

 

 

스프링배치 완벽가이드 책 참고

반응형

Designed by JB FACTORY