web-dev-qa-db-ja.com

SSIS変換が非ブロックか、部分的にブロックか、完全にブロックかを判断するにはどうすればよいですか?

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クレンジングトランスフォームは非ブロッキングトランスフォームであると主張していますが、 らしい 部分的にブロックされていると私に。

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

部分的にブロックする変換とブロックする変換はデータを新しいバッファーに移動しますが、適切なバッファーで動作する非ブロック化とは対照的に、解決策は変換の実行中にバッファーの作成を監視することだと思いますが、確信が持てません(a )これにより最終的な回答が得られるかどうか、および(b)これを行う方法。

非ブロッキング変換によって新しい実行ツリーが開始されることはないと思われます。そのため、答えはPipelineExectionTreesおよびPipelineExecutionPlanのロギングにある可能性があります。これは同期と非同期を区別するかもしれませんが、部分的にブロックすることと完全にブロックすることを区別しないかもしれません。

12
Thronk

ブロックしている操作は、すべての行が表示されて処理されるまで待機してからでないと、バッファーの作成を開始できません。

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

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

しかし、多くの文章では、「部分的にブロッキング」を「ノンブロッキング」と呼んでいます。これは、動作が「ブロッキング」よりも「ノンブロッキング」に近いためです。

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

4
Rob Farley