카테고리 없음

배치(Batch) 프로그램

anott 2024. 3. 17. 23:00

배치 프로그램

배치(Batch) 프로그램은 사용자와 상호작용 없이 대량의 데이터를 처리하는 여러 작업들을 하나로 묶어 일괄로 수행되도록 하는 것을 말한다. 배치 프로그램은 정해진 시간 내에 수행이 완료되어야 한다.

배치 프로그램은 정기적으로 반복해서 수행되거나 또는 특정 조건에 해당될 때 자동으로 수행된다. 이때 수행 조건은 정기 배치(주로 야간), 조건에 맞는 이벤트성 배치, 사용자가 요구하는 On-Demand 배치 이렇게 3가지로 정리할 수 있다. 이를 통해 반복 작업을 효율적으로 처리할 수 있다.

배치 프로그램의 한 종류로는 절차형 프로그램이 있다. 절차형 프로그램은 애플리케이션 커서를 열고나서 루프 내부에서 다른 SQL 등을 호출하여 동일한 처리를 반복한다. 이 때문에 반복적인 DB Call 발생하거나, Random I/O 위주로 수행될 수 있다.

배치 프로그램의 예시로는 급여, 재고 처리, 데이터 변환, 주간/월간 청구 등이 있다.

 

배치 프로그램 사용 방식

과거에는 야간에 배치를 돌리고 업무시간에 활용하는 방식 등의 일단위 또는 월단위 배치가 많은 편이었다. 현재는 시간단위로 도는 배치가 증가했고, 분단위도 있다. 배치 전용 서버 또는 인스턴스가 있기도 하다.

 

배치 프로그램과 온라인 프로그램, 그리고 배치 프로그램 사용 시 주의사항

온라인(Online)과 배치는 다르다. 온라인 프로그램은 전체 처리속도 최적화 또는 최초 응답속도 최적화가 중요하다. 반면 배치 프로그램은 항상 전체 처리속도 최적화를 중요시해야 한다. 배치 프로그램 하나를 튜닝해도 전체 처리속도를 줄이지 못하면 무의미하다고 볼 수 있다.

같은 의미에서 배치 프로그램을 사용할 때에는 전체적인 자원 사용량을 확인해야 한다. 병렬도를 높게 해서 빨리 처리하는 것보다 차라리 parallel 없이 오래 수행하게 하는 것이 나을 수도 있다. 동시간에 수많은 프로그램이 돌 경우 자원(CPU, 메모리, 디스크 등)과 Latch 포함한 Lock이 발생할 수 있기 때문이다.

만약 병렬도를 높이려고 하는 경우 동시 사용자 수가 적을 때 사용해야 하며, 작은 테이블은 오히려 병렬을 사용하지 않는 것이 낫다. 병렬 DML은 Exclusive 모드 테이블 Lock이 걸리기 때문에 트랜잭션이 활발한 업무시간에는 사용하지 않도록 주의해야 한다. 또한 parallel 힌트를 사용할 경우 full 힌트와 함께 사용해야 한다.

배치 프로그램을 통해 DB에 INSERT/DELETE/UPDATE 하는 경우 작업이 많이 발생할 수 있다. 따라서 적절한 COMMIT 사이즈를 설정해야 한다. 반면 수행하다 에러가 날 경우 1건 단위로 롤백할 수 있어야 한다.

배치 프로그램은 테스트 데이터를 구성하는 것이 쉽지 않기 때문에 테스트에 많은 시간이 소요되며 어렵다.

 

 


배치 프로그램 글을 정리하면서 느낀 점

배치 프로그램을 조금이라도 알면 업무할  도움이   같아서 간단하게 정리해 보았다. DATA ON-AIR에서 대규모 배치시스템의 성공적인 구축 전략 대용량 데이터를 위한 배치 프로그램 개선에서 배치 프로그램을 수정해야하는 가상의 인물 이야기를 읽었는데 덕분에  배치 수정이 어려운지 간접적으로 이해할  있었다. 

 

출처 : 배치 프로그램 튜닝 , 배치 처리란 무엇인가요? , 대규모 배치시스템의 성공적인 구축 전략