2013-07-09 2 views
-2

"Output0"(5) 출력의 "A"(67) 및 데이터 흐름 작업 구성 요소 (1)의 출력 열은 이후에 데이터 흐름 작업에서 사용되지 않습니다. 출력 열은 데이터 흐름 작업 성능을 향상시킬 수 있습니다. "이후에 사용되지 않는 데이터 흐름 작업 경고

이러한 경고는 사용되지 않는 데이터 흐름에 열이 나타냅니다 내 문제

+0

문제를 설명하십시오 ... –

+0

성능 향상을 위해 경고를 제거하고 싶습니다. – USER9999

답변

3

해결하시기 바랍니다. 데이터 흐름은 고정 크기 메모리의 "버킷"을 할당하고 소스의 데이터로 채우고 다운 스트림 구성 요소가 메모리 변환에 직접 액세스하여 동기 변환을 수행하도록합니다.

메모리는 한정된 리소스입니다. SSIS가 1GB의 메모리를 가지고 있고 한 행의 데이터가 4096MB의 메모리를 필요로한다면 메모리 공간이 부족하기 전에 파이프 라인에 최대 256 행의 데이터를 저장할 수 있습니다. 가능한 256 개의 데이터베이스로 작업 할 때 집합 기반 작업을 수행하기 때문에 256 개의 행이 N 개의 행 집합으로 분할됩니다.

이 모든 것이 중요한 이유는 무엇입니까? SSIS는 사용자가 파이프 라인에 가져온 모든 것을 사용했는지 여부를 감지합니다. 사용하지 않으면 메모리를 낭비합니다. 사용되지 않는 열을 제외함으로써 4096을 소모하는 단일 행 대신에 각 행에 필요한 메모리 양을 1024MB로 줄였습니다. 이제는 필요한 것을 취함으로써 파이프 라인에 1024 행을 가질 수 있습니다.

어떻게 가나 요? 데이터 원본에서 테이블을 선택하는 대신 쿼리를 작성하십시오. 대신 SELECT * FROM myTable을 사용하지 말고 필요한 모든 열을 명시 적으로 열거하십시오. 플랫 파일 소스 (Flat File Sources)도 동일하게 사용됩니다. 전체 행을 읽어야하는 데 여전히 디스크 페널티를 지불하지만 DF를 치고 메모리를 소비 할 필요는 없습니다. 모든 조회에 대해 동일한 이야기 ​​- 필요한 데이터 만 쿼리합니다.

Asynchronous components은 성능에 대한 비난을 받으면서 알아야 할 마지막 사항입니다. 위의 계산은 신입생 수학 수업과 매우 흡사합니다. 수학을 쉽게 할 수있는 소가 있다고 가정합니다. 비동기 구성 요소로 인해 구성 요소 전후에 메모리가 분할됩니다. 그것들은 다운 스트림 구성 요소가 그 위의 주소 공간을 재사용 할 수 없도록 구성 요소를 통과하는 행의 모양을 근본적으로 변경합니다. 이로 인해 느린 작업 인 실제 메모리 복사본이 생성됩니다.

내 마지막 의견은 패키지가 제대로 수행되고 있는지, 허용 할 수있는 시간 프레임으로 끝내는 지에 관한 것입니다. 단, 할 일이 없으면 그대로두고 다음 작업으로 넘어가십시오. 이것들은 단지 경고 일 뿐이며 오류가 완전히 날아가서는 안됩니다.

+0

+1 교육적 답변; 하지만 4096 MB는 4096 MB보다 일반적인 예가 될 수 있습니까? – criticalfix

+0

@criticalfix True이고 원래 KBs를 사용했지만 추가 변환 수학을 원하지 않는다고 결정했습니다. – billinkc

관련 문제