summary:
i find way tell ssis, when running multiple executables in parallel, ones should run first. there plenty of material on internet maxconcurrentexecutables property, no information how ssis decides order run executables in.
i'm looking answer describes mechanism ssis uses determine runtime order of executables when no precedence constraints exist, , number of executables greater maximum concurrent executables.
more details:
i have master ssis package calling large number of staging packages, each of responsible copying data different table on our staging database. time these child packages take execute varies widely, < 1 minute > 20 minutes.
to use time best, longer-running packages run first, medium packages, small ones.
ideally, able sort packages priority containers (a,b,c), have ssis engine work on containers in order. don't want wait complete before starting b: rather, i'd executables in started before ssis begins working on b.
is there way have ssis start of tasks in container before starts working on container b? failing that, can describe logic ssis uses determine run order?
the maxconcurrentexecutables determines number of control flow items can executed in parallel , defaulted -1. equivalent number of processors plus 2.
in case execution of seqc a, seqc b , seqc c starts @ same time , continues each execute package task in each group until finishes them all. best utilise processing capacity , shorten execution time, need split packages each group such way each group takes same time finish ep tasks.
for example if have package1(30mins), package2(10mins), package3(8mins), package4(8mins), splitting following way gives optimum performance.
<table border=1 cellspacing="0px" cellpadding="5px"> <tr> <th>seqc a</th><th>seqc b</th></tr> <tr><td>package1</td><td>package2</td> </tr> <tr><td> </td><td>package3</td> </tr> <tr><td> </td><td>package4</td> </tr> </table>