Ada beberapa blog yang mengklaim mengkategorikan Transformasi SSIS menjadi pemblokiran (asinkron), non-pemblokiran (sinkron) dan sebagian pemblokiran (asinkron).
Ketika melihat pertanyaan spesifik: Apakah multicast sinkron (non-blocking) atau asynchronous (sebagian memblokir)?
Salah satu sumber mengklaim async: "Multicast adalah transformasi asinkron (juga dikenal sebagai pemblokiran sebagian)" sumber: http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx
dan sinkron lainnya: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/
Sumber daya lain mengklaim transformasi DQS Cleansing adalah transformasi non-blocking, tetapi bagi saya tampaknya sebagian memblokir.
Harap jangan menjawab dengan tautan ke daftar transformasi yang dikategorikan berdasarkan jenis. Jawaban untuk pertanyaan ini diharapkan akan memungkinkan metode yang lebih keras untuk MEMBUKTIKAN jawaban yang benar.
Karena transformasi pemblokiran dan pemblokiran sebagian akan memindahkan data ke buffer baru sebagai lawan dari non-pemblokiran yang beroperasi pada buffer di tempat, saya menduga bahwa solusinya adalah menonton pembuatan buffer selama eksekusi transformasi, tetapi saya tidak yakin (a ) jika ini akan menghasilkan jawaban yang pasti dan (b) bagaimana melakukan ini.
Saya percaya bahwa transformasi non-pemblokiran tidak akan menyebabkan pohon eksekusi baru dimulai, jadi ada kemungkinan bahwa jawabannya terletak pada pencatatan PipelineExectionTrees dan PipelineExecutionPlan. Ini mungkin membedakan antara sinkron dan asinkron, tetapi mungkin tidak membedakan antara sebagian memblokir dan sepenuhnya memblokir.
sumber
Jawaban:
Operasi yang memblokir harus menunggu sampai semua baris terlihat dan ditangani sebelum dapat mulai mengisi buffer.
Operasi yang sebagian-blokir menulis data ke buffer baru, yang hanya bisa ditangani oleh operasi berikutnya setelah setiap buffer (biasanya hanya di bawah 10.000 baris) diisi.
Operasi yang non-pemblokiran dapat membuat operasi selanjutnya bekerja pada buffer yang sama, karena setiap baris ditangani.
Tetapi banyak teks akan menyebut 'pemblokiran sebagian' sebagai 'non-pemblokiran', karena perilakunya jauh lebih dekat dengan 'non-pemblokiran' daripada 'pemblokiran'.
Anda harus bisa mengetahui apa yang terjadi dengan menonton aliran data berjalan, dan melihat ketika jumlahnya meningkat di setiap titik.
sumber