다음을 통해 공유


캡처 작업

캡처 작업은 매개 변수가 없는 저장 프로시저인 sp_MScdc_capture_job을 실행하여 시작됩니다. 이 저장 프로시저는 먼저 msdb.dbo.cdc_jobs의 캡처 작업을 위해 maxtrans, maxscans, continuous 및 pollinginterval의 구성 값을 추출합니다. 그런 다음 이러한 구성 값은 sp_cdc_scan 저장 프로시저에 매개 변수로 전달되고 로그 검색을 수행하기 위해 sp_replcmds를 호출하는 데 사용됩니다.

캡처 작업 매개 변수

캡처 작업의 동작을 이해하려면 구성 가능한 매개 변수가 sp_cdc_scan에서 어떻게 사용되는지 알아야 합니다.

maxtrans 매개 변수

maxtrans 매개 변수는 단일 로그 검색 주기에서 처리할 수 있는 트랜잭션의 최대 수를 지정합니다. 검색 중에 처리할 트랜잭션 수가 이 한도에 도달하면 현재 검색에 추가 트랜잭션이 포함되지 않습니다. 검색 주기가 완료된 후에는 처리된 트랜잭션의 수가 항상 maxtrans보다 작거나 같습니다.

maxscans 매개 변수

maxscans 매개 변수는 반환(continuous = 0) 또는 waitfor 실행(continuous = 1) 전에 로그를 비우기 위해 시도되는 검색 주기의 최대 수를 지정합니다.

continuous 매개 변수

continuous 매개 변수는 로그를 비우거나 검색 주기의 최대 수를 실행한 후 sp_cdc_scan이 제어를 포기할지를 지정합니다(단발 모드). 또한 명시적으로 중지될 때까지 sp_cdc_scan을 계속 실행할지도 지정합니다(연속 모드).

단발 모드

단발 모드에서는 캡처 작업에서 sp_cdc_scan이 maxtrans의 최대 검색 횟수까지 수행하여 로그를 비우고 반환하도록 요청합니다. 로그에 있는 maxtrans와 모든 트랜잭션은 이후 검색에서 처리됩니다.

단발 모드는 처리할 트랜잭션 양이 알려져 있고 작업이 종료된 후 자동으로 닫히면 이점을 얻을 수 있는 제어된 테스트 환경에서 사용됩니다. 프로덕션 환경에서는 단발 모드를 사용하지 않는 것이 좋습니다. 프로덕션 환경은 검색 주기의 실행 빈도를 관리하는 작업 일정에 의존하기 때문입니다.

단발 모드로 실행될 때는 다음과 같은 공식을 사용하여 초당 트랜잭션의 단위로 캡처 작업의 예상 처리량에 대한 상한 값을 계산할 수 있습니다.

(maxtrans * maxscans) / number of seconds between scans

로그 검색 및 변경 테이블 채우기를 위해 필요한 시간이 0과 크게 차이 나지 않더라도 평균 작업 처리량은 단일 검색에 대해 허용되는 최대 트랜잭션 수와 최대 허용 검색 수를 곱한 값을 로그 처리 분할 시간(초)으로 나눈 값을 초과할 수 없습니다.

로그 검색을 제어하는 데 단발 모드를 사용하는 경우에는 로그 처리 간격(초)이 작업 일정에 의해 제어됩니다. 이러한 유형의 동작이 필요한 경우 캡처 작업을 연속 모드에서 실행하여 로그 검색의 일정 조정을 관리하는 것이 좋습니다.

연속 모드 및 폴링 간격

연속 모드에서 캡처 작업은 sp_cdc_scan이 연속으로 실행되도록 요청합니다. 이렇게 하면 저장 프로시저에서 maxtrans 및 maxscans뿐만 아니라 로그 처리 간격(초)(폴링 간격)에 대한 값을 제공함으로써 고유한 대기 루프를 관리할 수 있습니다. 이 모드에서 실행될 때 캡처 작업은 활성 상태로 유지되고 로그 검색 사이에 WAITFOR를 실행합니다.

[!참고]

폴링 간격 값이 0보다 큰 경우 연속 모드에서 실행되는 작업에도 되풀이되는 단발 작업의 처리량과 동일한 상한 값이 적용됩니다. 따라서 (maxtrans * maxscans)를 0이 아닌 폴링 간격으로 나누면 캡처 작업에서 처리할 수 있는 트랜잭션의 평균 수에 대한 상한 값이 나옵니다.

캡처 작업 사용자 지정

캡처 작업에서 새 검색을 즉시 시작할지, 아니면 고정된 폴링 간격을 사용하지 않고 새 검색을 시작하기 전에 대기 시간을 사용할지를 결정하는 추가 논리를 적용할 수 있습니다. 이러한 옵션을 사용하면 단순히 하루 일과를 기준으로 업무량이 많을 때는 대기 시간을 매우 길게 적용하고, 주간 업무를 완료하고 야간 업무를 준비해야 하는 마감 시간에는 폴링 간격을 0으로 설정할 수도 있습니다. 캡처 프로세스 진행 상황을 모니터링하여 자정에 커밋된 모든 트랜잭션이 검색되고 변경 테이블에 보관된 시간을 확인할 수도 있습니다. 이렇게 하면 캡처 작업이 종료된 후 예약된 일일 재시작 시간에 다시 시작되도록 할 수 있습니다. sp_cdc_scan을 호출하는 배달된 작업 단계를 사용자가 작성한 sp_cdc_scan용 래퍼 호출로 바꾸면 최소한의 노력으로도 고도로 사용자 지정된 동작을 얻을 수 있습니다.

참고 항목

개념