Comment déterminer si une transformation SSIS est non bloquante, partiellement bloquante ou entièrement bloquante?

12

Il existe plusieurs blogs qui prétendent classer les transformations SSIS en blocage (asynchrone), non bloquant (synchrone) et partiellement bloquant (asynchrone).

Lorsque vous examinez la question spécifique: la multidiffusion est-elle synchrone (non bloquante) ou asynchrone (partiellement bloquante)?

Une ressource affirme async: "La multidiffusion est une transformation asynchrone (également connue sous le nom de blocage partiel)" : http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx

et un autre syncrone: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/

D'autres ressources affirment que la transformation de nettoyage DQS est une transformation non bloquante, mais elle me semble être partiellement bloquante.

Veuillez ne pas répondre avec un lien vers une liste de transformations classées par type. Nous espérons que la réponse à cette question permettra une méthode plus rigoureuse pour PROUVER une réponse correcte.

Comme les transformations partiellement bloquantes et bloquantes déplaceront les données vers de nouveaux tampons par opposition au non-bloquant qui opèrent sur le tampon en place, je soupçonne que la solution sera de surveiller la création du tampon pendant l'exécution de la transformation, mais je ne suis pas sûr (un ) si cela produira la réponse définitive et (b) comment procéder.

Je crois qu'une transformation non bloquante ne provoquera pas le démarrage d'une nouvelle arborescence d'exécution, il est donc possible que la réponse réside dans la journalisation des PipelineExectionTrees et PipelineExecutionPlan. Cela peut faire la différence entre synchrone et asynchrone, mais ne peut pas faire la différence entre le blocage partiel et le blocage complet.

Thronk
la source
3
La multidiffusion est synchrone. Le test sniff rapide pour synch vs async est de savoir si le lineageid (avant 2012) reste le même avant et après une transformation. Permettez-moi d'examiner 2012 et comment cela fonctionne maintenant.
billinkc
2
Le blocage du comportement et la synchronicité ne sont pas la même chose. La synchronicité consiste à savoir si les données doivent être déplacées dans un nouveau tampon ou non, tandis que le blocage consiste à savoir si chaque ligne peut être gérée immédiatement ou non. Par exemple, Union All n'est pas bloquant, mais asynchrone - il crée un nouveau tampon et un nouveau thread d'exécution, mais n'a pas besoin d'attendre pour le faire.
Rob Farley
@Rob - même si je suis d'accord, ce n'est pas la même chose (les asynchrones peuvent bloquer partiellement ou complètement) - Le blog jorg_klein déclare en fait que l'Union All bloque partiellement. Je suis enclin à accepter que si les données sont déplacées dans le nouveau tampon, l'intuition me porte à penser que cela bloquerait partiellement. S'il peut se tromper et que mon intuition est incorrecte, tant mieux cela répondrait à la question!
Thronk
Quelqu'un at-il des idées sur la façon dont cela pourrait être testé? Je suppose que les performances ou les journaux d'informations pourraient être utilisés pour le vérifier, mais je ne sais pas exactement lequel.
Nick.McDermaid
1
Pour ceux qui pourraient vouloir tester cette astuce passe en

Réponses:

4

Une opération qui bloque doit attendre que toutes les lignes aient été vues et gérées avant de pouvoir remplir les tampons.

Une opération qui bloque partiellement écrit des données sur de nouveaux tampons, qui ne sont traités par l'opération suivante qu'une fois que chaque tampon (généralement un peu moins de 10 000 lignes) est rempli.

Une opération non bloquante peut faire fonctionner l'opération suivante sur le même tampon, car chaque ligne est gérée.

Mais de nombreux textes qualifieront de «partiellement bloquant» de «non bloquant», car le comportement est beaucoup plus proche de «non bloquant» que de «bloquant».

Vous devriez être en mesure de dire ce qui se passe en regardant le flux de données s'exécuter et en voyant quand les nombres augmentent à chaque point.

Rob Farley
la source