There are two types of asynchronous transformations: fully-blocking and semi-blocking. Fully blocking transformations read all input rows before output begins. Semi-blocking transformations will allow at least some rows out before having all rows inputted even though it produces a new buffer.
Examples of fully-blocking transformations include:
- Sort
- Aggregate
- Fuzzy Lookup
- Fuzzy Grouping
Examples of semi-blocking transformations include:
- Merge Join
- Pivot
- Union All
- Instead of using a Merge Join in your Data Flow, perform the joins in the source query or in a transform environment.
- If you absolutely have to use Merge Join, make sure that you sort the data in your source query. In the Advanced Editor, set the “IsSorted” property to true, and set the Sort Key Position on the Output Columns to the appropriate values.
- Instead of using an Aggregate transform do perform a count, consider using Row Count, which is a synchronous transformation.
- If you are using a Pivot or Unpivot transformation and it is performing poorly, consider using staging tables in your solution in order to leverage your SQL server environment to perform these transformations instead of doing it in SSIS.
- Even though Union All is a semi-blocking asynchronous transformation, you will probably not achieve better performance by replacing the Union All with multiple inserts.
No comments:
Post a Comment