Come determinare se una trasformazione SSIS è non bloccante, parzialmente bloccante o completamente bloccante?


12

Esistono diversi blog che affermano di classificare le trasformazioni SSIS in blocco (asincrono), non blocco (sincrono) e blocco parziale (asincrono).

Quando si esamina la domanda specifica: il multicast è sincrono (non bloccante) o asincrono (parzialmente bloccante)?

Una risorsa afferma asincrono: "Il multicast è una trasformazione asincrona (anche conosciuta come parzialmente bloccante)" fonte: http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx

e un altro sincrono: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/

Altre risorse sostengono che la trasformazione DQS Cleansing è una trasformazione non bloccante, ma a me sembra essere parzialmente bloccante.

Non rispondere con un link a un elenco di trasformazioni classificate per tipo. Si spera che la risposta a questa domanda consentirà un metodo più rigoroso per PROVARE una risposta corretta.

Dato che le trasformazioni parzialmente bloccanti e bloccanti sposteranno i dati su nuovi buffer rispetto al non-blocco che opera sul buffer in atto, sospetto che la soluzione sarà quella di guardare la creazione del buffer durante l'esecuzione della trasformazione, ma non sono sicuro (un ) se questo produrrà la risposta definitiva e (b) come farlo.

Credo che una trasformazione non bloccante non provocherà l'inizio di un nuovo albero di esecuzione, quindi è possibile che la risposta risieda nella registrazione di PipelineExectionTrees e PipelineExecutionPlan. Ciò può differenziare tra sincrono e asincrono, ma non può differenziare tra blocco parziale e blocco completo.


3
Mulitcast è sincrono. Il rapido test sniff per synch vs async è se il lineageid (pre 2012) rimane lo stesso prima e dopo una trasformazione. Vorrei esaminare il 2012 e come funziona ora.
Billinkc,

2
Il comportamento di blocco e la sincronicità non sono la stessa cosa. La sincronicità riguarda la necessità o meno di spostare i dati in un nuovo buffer, mentre il blocco riguarda la possibilità di gestire immediatamente ogni riga. Ad esempio, Union All non è bloccante, ma asincrono: crea un nuovo buffer e un nuovo thread di esecuzione, ma non è necessario attendere per farlo.
Rob Farley,

@Rob - anche se concordo sul fatto che non sono la stessa cosa (l'asincrono può bloccare parzialmente o completamente) - Il blog jorg_klein in realtà afferma che Union All sta parzialmente bloccando. Sono propenso a concordare come se i dati fossero spostati nel nuovo buffer, l'intuizione mi porta a pensare che si bloccherebbe parzialmente. Se può essere smentito e la mia intuizione è errata, tanto meglio in quanto risponderebbe alla domanda!
Thronk,

Qualcuno ha qualche idea su come questo potrebbe essere testato? Immagino che i log delle prestazioni o delle informazioni possano essere usati per scoprirlo di sicuro, ma non sono esattamente sicuro di quale.
Nick.McDermaid

1
Per coloro che potrebbero voler testare questo suggerimento va oltre il test delle trasformazioni di semi-blocco

Risposte:


4

Un'operazione che sta bloccando deve attendere fino a quando tutte le righe sono state visualizzate e gestite prima di poter iniziare a popolare i buffer.

Un'operazione che sta parzialmente bloccando scrive i dati su nuovi buffer, che vengono gestiti dall'operazione successiva solo dopo aver popolato ciascun buffer (in genere poco meno di 10.000 righe).

Un'operazione non bloccante può fare in modo che l'operazione successiva funzioni sullo stesso buffer, poiché ogni riga viene gestita.

Ma molti testi si riferiranno al "blocco parziale" come "non blocco", poiché il comportamento è molto più vicino al "non blocco" che al "blocco".

Dovresti essere in grado di dire cosa sta succedendo guardando l'esecuzione del flusso di dati e vedendo quando i numeri aumentano in ogni punto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.