SSIS를 처음 사용하여 데이터 워크 플로에서 삽입 작업을 수행하는 동안 더 나은 성능을 제공 할 것으로 알고 싶습니다.OLE 명령 작업과 OLE 대상
다른 하나를 사용하면 어떤 이점이 있습니까?
SSIS를 처음 사용하여 데이터 워크 플로에서 삽입 작업을 수행하는 동안 더 나은 성능을 제공 할 것으로 알고 싶습니다.OLE 명령 작업과 OLE 대상
다른 하나를 사용하면 어떤 이점이 있습니까?
이들은 이름이 비슷한 변형이지만 완전히 다른 용도로 사용됩니다. Destination은 마치 데이터 흐름의 종착역입니다. OLE DB 대상의 출력 (오류 흐름 제외)에 아무 것도 연결할 수 없습니다. 대상은 집합을 기반으로 삽입 할 수 있습니다 (성능 향상을 위해서는 매우 중요 함). 또한 싱글 톤 삽입을 수행 할 수도 있습니다 (데이터 흐름을 따라 행마다 행에 대한 insert 문을 실행 함). 그러면 대상 처리량이 줄어 듭니다.
OLE DB 명령의 동작과 대조하십시오. 이것은 데이터 흐름을 통해 흐르는 각 행에 대해 원하는대로 수행 할 수있는 변환 구성 요소입니다. 그것은 스위스 군용 칼 SQL "doer"입니다. 은을 INSERT 문으로 사용하지만 가장 일반적으로는 UPDATE 대상으로 간주합니다. 작은 데이터 세트에서는 괜찮습니다. OLE DB 명령 변환 사용 비용은 비용입니다. 데이터 세트를 통해 흐르는 각 행에 대해 단일 명령문을 실행합니다. 트랜잭션 로그, 트랜잭션 시간, 계획 캐시 및 내가 생각할 수없는 다른 여러 가지 측면에서 비용이 많이 듭니다. 이러한 작업을 일괄 처리하도록 SQL Server에 지시 할 방법이 없으므로 행 (RBAR)을 고민하여 명령문 행을 실행하는 것을 줄일 수 있습니다.
SSIS에서 업데이트해야 할 경우 준비 테이블에 업데이트를 쓰고 데이터 흐름이 완료된 후에 집합 기반 업데이트를 수행하면 훨씬 향상된 성능 프로필을 얻을 수 있습니다. 앤디 레오나드 (Andy Leonard)는이 패턴에 대해 자신의 Stairway to Integration Services series에 대해 토론하는 훌륭한 일련의 기사를 갖고 있습니다. 는 대상 테이블에 데이터의 대량로드를 허용하기 때문에
참조
는 OLE 대상은 삽입을위한 더 나은 선택입니다.
OLE DB 명령 (OLE 명령 태스크가 의미하는 것으로 가정 함)은 상당히 느린 행 단위로 작업을 수행합니다. 그러나 OLE DB 명령은 OLE 대상이 수행 할 수없는 업데이트 및 삭제를 처리 할 수 있습니다.