Pages

Sunday, November 10, 2013

Parallel Processing in SSIS Part 2


In the previous post I have covered the MaxConcurrentExecutables property in SSIS Parallel processing. In this post, which is continuation to the previous post,  I will cover EngineThreads property


Where can I set the EngineThreads property?

EngineThreads property is available with each dataflow task. As per MSDN BOL it is “An integer that specifies the number of threads that the data flow task can use during execution” which actually means number of threads that can run parallel in dataflow pipeline. To set the value for this property right click on the dataflow task and select properties, in the Misc section you will find EngineThreads.



In the above screen shot you see the value of 5 which means 5 Engine threads can run in parallel.

Note: EngineThreads governs both Source threads and Worker threads.

What is difference between source threads and worker threads?

Source threads works on source components in the data flow and the worker threads works on transformations and destinations.

If an Engine thread governs both Source threads and Worker threads what does EngineThreads value 2 implies?

A value of 2 for engine thread implies that up to 2 source threads and up to 2 worker threads.


In the above screen shot we can observe that records are being pulled from the source (source table has 1 million+ records) [by source thread] and at the same time we can observe that rows and passed out of look-up transformation [by worker thread]. This clearly depicts that for a value of 2 EngineThreads has resulted in 2 source and 2 worker threads that are running in parallel.

If my EngineThreads property is set for 2 and there are dependent paths in the data flow how does this work?


As explained EngineThreads property will be 100% utilized provided there are independent paths. If there are dependent paths EngineThreads will be used where ever possible. In the below screen shot we can see that there is one source and multiple transformations and destinations. Since there is only one possible source only one source thread was created and 2 worker threads are created 

No comments:

Post a Comment