SSISトランスフォームが非ブロック、部分ブロック、または完全ブロックのいずれであるかを判断するにはどうすればよいですか?


12

SSIS変換をブロッキング(非同期)、非ブロッキング(同期)、および部分ブロッキング(非同期)に分類すると主張するブログがいくつかあります。

特定の質問を見るとき:マルチキャストは同期(非ブロッキング)ですか、非同期(部分的にブロッキング)ですか?

1つのリソースが非同期を主張している:「マルチキャストは非同期(部分ブロックとも呼ばれる)変換」ソース: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トランスフォームが非ブロッキングトランスフォームであると主張していますが、部分的にブロックしているように思えます。

タイプ別に分類された変換のリストへのリンクで答えないでください。この質問に対する答えにより、より厳密な方法で正しい答えを証明できるようになることが期待されます。

部分的にブロックする変換とブロックする変換は、所定のバッファーで動作する非ブロックではなく、新しいバッファーにデータを移動するため、変換の実行中にバッファーの作成を監視するのが解決策になると思いますが、 )これが決定的な答えを生成する場合、および(b)これを行う方法。

非ブロッキング変換では新しい実行ツリーが開始されないため、PipelineExectionTreesとPipelineExecutionPlanのログに答えが存在する可能性があります。これにより、同期と非同期が区別される場合がありますが、部分ブロックと完全ブロックは区別されない場合があります。


3
マルチキャストは同期的です。synch vs asyncの簡単なスニフテストは、変換の前後でlineageid(2012年以前)が同じかどうかです。2012年とそれが今どのように機能するかを見てみましょう。
billinkc 14

2
ブロッキング動作と同期性は同じものではありません。同期は、データを新しいバッファーに移動する必要があるかどうかに関するものであり、ブロックは、各行をすぐに処理できるかどうかに関するものです。たとえば、Union Allは非ブロッキングですが、非同期です-新しいバッファーと新しい実行スレッドを作成しますが、そのために待機する必要はありません。
ロブファーリー14

@Rob-私はそれらが同じものではないことに同意します(非同期は部分的にまたは完全にブロックできます)-jorg_kleinブログは実際にはUnion Allが部分的にブロックしていると述べています。データが新しいバッファに移動したかのように、私は同意する傾向があります。直感により、それが部分的にブロックされると思います。彼が間違っていると証明でき、私の直感が間違っていれば、それは質問に答えるので、もっと良いです!
トロンク14

これをどのようにテストできるかについて、誰にもアイデアはありますか?パフォーマンスログまたは情報ログを使用してこれを確実に見つけることができると思いますが、どちらが正確かはわかりません。
Nick.McDermaid 14

1
このテストしたいかもしれない人のために、先端が半ブロック変換のテストを乗り越えて

回答:


4

ブロッキングしている操作は、すべての行が表示されて処理されるまで待ってから、バッファーの取り込みを開始する必要があります。

部分的にブロックしている操作は、新しいバッファーにデータを書き込みます。新しいバッファーは、各バッファー(通常10,000行未満)が読み込まれると、次の操作でのみ処理されます。

非ブロッキングの操作では、各行が処理されるため、同じバッファーで後続の操作を実行できます。

しかし、多くのテキストでは、「部分ブロック」を「非ブロック」と呼びます。これは、動作が「ブロック」よりも「非ブロック」に近いためです。

データフローの実行を監視し、各ポイントで数値が増加するタイミングを確認することで、何が起こっているのかがわかるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.