SSIS 변환이 비 차단, 부분 차단 또는 완전 차단인지 어떻게 확인합니까?


12

SSIS 변환을 차단 (비동기), 비 차단 (동기) 및 부분 차단 (비동기)으로 분류한다고 주장하는 여러 블로그가 있습니다.

특정 질문을 살펴볼 때 : 멀티 캐스트 동기 (비 차단) 또는 비동기 (부분 블로킹)입니까?

한 자원은 비동기 주장 : "멀티 캐스트는 비동기식 (일부 차단이라고도 함) 변환" 소스 : http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx

그리고 또 다른 상식 : https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/

다른 리소스는 DQS Cleansing 변환이 비 차단 변환이라고 주장하지만 부분적으로 차단 하는 것 같습니다 .

유형별로 분류 된 변환 목록에 대한 링크로 답변하지 마십시오. 이 질문에 대한 답변은 정답을 입증하기 위해 더 엄격한 방법을 가능하게 할 것입니다.

부분 블로킹 및 블로킹 변환은 버퍼에서 작동하는 비 블로킹과 달리 데이터를 새로운 버퍼로 이동하므로 변환 실행 중에 버퍼 생성을 감시해야한다고 생각하지만 확실하지 않습니다 (a ) 이것이 확실한 해답을 제시한다면 (b) 어떻게해야하는지.

비 블로킹 변환으로 인해 새로운 실행 트리가 시작되지 않을 것으로 생각되므로 PipelineExectionTrees 및 PipelineExecutionPlan을 로깅하는 것이 답일 수 있습니다. 이는 동기식과 비동기식을 구분할 수 있지만 부분 차단과 완전 차단을 구분할 수는 없습니다.


3
멀티 캐스트는 동 기적입니다. synch vs async에 대한 빠른 스 니프 테스트는 lineageid (2012 이전)가 변환 전후에 동일하게 유지되는지 여부입니다. 2012 년과 지금 어떻게 작동하는지 살펴 보겠습니다.
billinkc

2
차단 동작과 동기 성은 동일하지 않습니다. 동기 성은 데이터를 새 버퍼로 이동해야하는지 여부에 관한 것이며, 블로킹은 각 행을 즉시 처리 할 수 ​​있는지 여부에 관한 것입니다. 예를 들어, Union All은 비 차단이지만 비동기 적입니다. 새 버퍼와 새 실행 스레드를 만들지 만 기다릴 필요는 없습니다.
Rob Farley

@Rob-동의하지는 않지만 (비동기 적으로 또는 부분적으로 완전히 차단할 수 있음) jorg_klein 블로그는 실제로 Union All이 부분적으로 차단되고 있다고 말합니다. 나는 데이터가 새로운 버퍼로 이동하는 것처럼 동의하고, 직관은 그것이 부분적으로 차단 될 것이라고 생각하게합니다. 그가 틀렸다는 것을 증명할 수 있고 내 직관이 틀렸다면, 그 질문에 대한 답이 더 좋을 것입니다!
Thronk

누구나 이것을 테스트하는 방법에 대한 아이디어가 있습니까? 성능 또는 정보 로그를 사용하여 확실하게 찾을 수 있지만 정확히 어느 것인지 확실하지 않습니다.
Nick.McDermaid

1
테스트를 원하시는 분들을 위해이 팁은 세미 블로킹 변환 테스트를 진행합니다

답변:


4

블로킹중인 오퍼레이션은 버퍼 채우기를 시작하기 전에 모든 행을보고 처리 할 때까지 기다려야합니다.

부분적으로 차단되는 작업은 새 버퍼에 데이터를 기록하며 각 버퍼가 채워지면 (일반적으로 10,000 행 미만) 다음 작업으로 만 처리됩니다.

비 차단 작업은 각 행이 처리 될 때 후속 작업이 동일한 버퍼에서 작동하도록 할 수 있습니다.

그러나 많은 텍스트에서는 동작이 '차단'보다 '비 차단'에 더 가깝기 때문에 '부분 차단'을 '비 차단'이라고합니다.

데이터 흐름 실행을보고 각 지점에서 숫자가 증가하는시기를 확인하여 진행 상황을 알 수 있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.