배치 프로그램은 일련의 작업들을 하나로 묶어 처리하는 것을 말한다.
좀 더 자세히 말하면, 사용자와의 상호작용 없이 대량의 데이터를 처리하는 일련의 작업들을 묶어 정기적으로 반복하거나 정해진 규칙에 따라 자동으로 수행하는 것을 말한다.
정해진 시점, 주로 야간에 정기적으로 실행되는 것을 정기 배치, 사전에 정의해 둔 조건이 충족되면 자동으로 실행하는 것을 이벤트성 배치, 사용자의 명시적인 요구가 있을 때마다 실행되면 On-Demand 배치라고 한다.
일반적으로 정기 배치가 사용된다.
절차형으로 작성된 프로그램으로 구현될 수도 있고 One SQL로 구현될 수가 있다.
SQL문이 처리해야 하는 작업 범위를 여러 개로 나누어 프로세스(혹은 스레드)가 동시에 처리하는 것이다.
select /*+ full(o) parallel(o, 4) */ count(*) 주문건수, sum(주문수량) 주문수량, sum(주문금액) 주문금액
from 주문 o where 주문일시 bet
where '20100101' and '20101231';
select /*+ index_ffs(o, 주문_idx)) parallel_index(o, 주문_idx, 4) */ count(*) 주문건수
from 주문 o
where 주문일시 between '20100101' and '20101231'
옵티마이저에 의해 인덱스 스캔이 선택되면 parallel 힌트가 무시되기 때문에, parallel 힌트를 사용할 때는 반드시 full 힌트도 사용해야 한다.
또 full table scan이 선택되면 parallel_index 힌트가 무시되기 때문에 아래와 같이 parallel_index 힌트를 사용할 때 반드시 index 또는 index_ffs 힌트를 함께 사용하는 습관도 필요하다.
Query Coordinator(이하 QC)는 병렬 SQL문을 발행한 세션을 말한다.