2012-07-30 3 views
0

SSIS를 처음 사용하여 데이터 워크 플로에서 삽입 작업을 수행하는 동안 더 나은 성능을 제공 할 것으로 알고 싶습니다.OLE 명령 작업과 OLE 대상

다른 하나를 사용하면 어떤 이점이 있습니까?

답변

2

이들은 이름이 비슷한 변형이지만 완전히 다른 용도로 사용됩니다. Destination은 마치 데이터 흐름의 종착역입니다. OLE DB 대상의 출력 (오류 흐름 제외)에 아무 것도 연결할 수 없습니다. 대상은 집합을 기반으로 삽입 할 수 있습니다 (성능 향상을 위해서는 매우 중요 함). 또한 싱글 톤 삽입을 수행 할 수도 있습니다 (데이터 흐름을 따라 행마다 행에 대한 insert 문을 실행 함). 그러면 대상 처리량이 줄어 듭니다.

OLE DB 명령의 동작과 대조하십시오. 이것은 데이터 흐름을 통해 흐르는 각 행에 대해 원하는대로 수행 할 수있는 변환 구성 요소입니다. 그것은 스위스 군용 칼 SQL "doer"입니다. 을 INSERT 문으로 사용하지만 가장 일반적으로는 UPDATE 대상으로 간주합니다. 작은 데이터 세트에서는 괜찮습니다. OLE DB 명령 변환 사용 비용은 비용입니다. 데이터 세트를 통해 흐르는 각 행에 대해 단일 명령문을 실행합니다. 트랜잭션 로그, 트랜잭션 시간, 계획 캐시 및 내가 생각할 수없는 다른 여러 가지 측면에서 비용이 많이 듭니다. 이러한 작업을 일괄 처리하도록 SQL Server에 지시 할 방법이 없으므로 행 (RBAR)을 고민하여 명령문 행을 실행하는 것을 줄일 수 있습니다.

SSIS에서 업데이트해야 할 경우 준비 테이블에 업데이트를 쓰고 데이터 흐름이 완료된 후에 집합 기반 업데이트를 수행하면 훨씬 향상된 성능 프로필을 얻을 수 있습니다. 앤디 레오나드 (Andy Leonard)는이 패턴에 대해 자신의 Stairway to Integration Services series에 대해 토론하는 훌륭한 일련의 기사를 갖고 있습니다. 는 대상 테이블에 데이터의 대량로드를 허용하기 때문에

참조

1

는 OLE 대상은 삽입을위한 더 나은 선택입니다.

OLE DB 명령 (OLE 명령 태스크가 의미하는 것으로 가정 함)은 상당히 느린 행 단위로 작업을 수행합니다. 그러나 OLE DB 명령은 OLE 대상이 수행 할 수없는 업데이트 및 삭제를 처리 할 수 ​​있습니다.