2010-06-09 2 views
0

SSIS 패키지의 성능을 향상 시키려합니다.필터링 된 참조 테이블이있는 SSIS 조회

내가 시작한 한 가지는 Lookups의 참조 테이블을 필터링하는 것입니다. 지금까지 필자는 테이블을 해당 조회의 참조 테이블로 사용했습니다.

첫 번째 개선은 테이블에서 필요한 열만 선택하는 SQL 절로 테이블을 변경하는 것이 었습니다.

다음은 필자가 사용하는 레코드 만이 테이블에로드하려고합니다. 이 상태로 유지한다면 300,000 라인 이상 (각각 약 500kb의 바이너리 컨텐츠가있는 거대한 라인)을로드하고 약 100 개를 사용하게 될 것입니다.

조회의 참조 표를 설정하는 SQL 조회에 일부 필터를 넣지 만 해당 필터에서 모든 OLE DB 소스에로드 된 ID를 사용해야합니다.

이렇게 할 방법이 있습니까?

조회 대신 OleDB 명령을 사용하여 한 번에 각 행을로드하는 것을 생각했지만 시간이 많이 걸리는 것을 제외하고는 100 개의 다른 행에 대해 동일한 내용을 100 번로드 할 수 있습니다. 한 번 조회하고 그것을 100 번 사용하십시오 ...

캐시를 활성화하면 여전히 좋지 않습니다. 왜냐하면 캐시가 사용하면 속도가 느려질 수 있습니다. 우리는 이미 매우 느립니다.

모든 아이디어가 크게 도움이됩니다.

답변

0

하나의 가능성은 먼저 하나의 데이터 흐름에서 영구 ID/임시 테이블로 고유 ID를 스트리밍 한 다음 나중에 데이터 흐름 (조회를 지연해야 함)에서 조회 (조인과 함께)에 사용하는 것입니다.

많은 ETL 패키지에서 먼저 데이터를 원시 파일로 스트리밍하여 모든 유형 변환과 모든 과정을 처리합니다. 그런 다음 이러한 모든 전환이 성공하면 새로운 차원을 만든 다음 차원에 연결하는 사실을 처리합니다.

+0

Ok Cade, 귀하의 제안에 감사드립니다, 나는 그것이 올바르게 작동한다고 생각합니다. 캐싱 옵션에 대해 어떻게 생각하십니까? 이걸 사용해 봤어? 당신이 그것을 개선하는 데 도움이 될 것 같아요 아니면 그냥 나를 느리게 것인가? – Diana

+0

@Diana 우리는 프로덕션에서 2005 년만을 사용하고 있으며 대소 문자를 구분하므로 대부분 미리로드 된 모드에서만 사용합니다. 나는 그것이 무엇인지 불렀다는 것을 기억하지 못한다. UI의 명칭은 실제 행동을 오도하는 것이다. Raw 파일에 대한 요점은 내가 원하는 곳에서 성능을 얻으려면 종종 프로세스에 대해 생각하는 상자 밖에서 많은 것을해야한다는 것입니다. 이 경우 전환을 한 번 수행하고 결과를 저장하는 것이 데이터를 확인하기 위해 전환을 수행하는 것보다 훨씬 빠르며로드가 발생하면 다시 전환을 수행합니다. –

+0

@Diana Multi-GB Raw 파일을 스트리밍하고 다시 읽었을 때 - 다시 읽거나 다시 변환하는 것보다 전체적으로 훨씬 더 빠릅니다. –

관련 문제